読者です 読者をやめる 読者になる 読者になる

ClosedXMLでエラー”The header row contains more than one field name '0'.”

C# Excel VisualStudio

(ClosedXML The header row contains more than one field name)
サーバ側でExcelファイルを操作必要があり、MSExcelを使うまでもないことなので、ClosedXMLを使用してXLSXファイルを読み書きしてたら突如なぞの例外発生
特定のファイルを開くときにエラーになっているもよう

f:id:orzmakoto:20151201154817p:plain

System.ArgumentException はハンドルされませんでした。
  HResult=-2147024809
  Message=The header row contains more than one field name '0'.
  Source=ClosedXML
  StackTrace:
       場所 ClosedXML.Excel.XLTable.get_FieldNames()
       場所 ClosedXML.Excel.XLTable.HeadersRow()
       場所 ClosedXML.Excel.XLTable.InitializeValues(Boolean setAutofilter)
       場所 ClosedXML.Excel.XLTable..ctor(XLRange range, String name, Boolean addToTables, Boolean setAutofilter)
       場所 ClosedXML.Excel.XLRange.CreateTable(String name, Boolean setAutofilter)
       場所 ClosedXML.Excel.XLWorkbook.LoadSpreadsheetDocument(SpreadsheetDocument dSpreadsheet)
       場所 ClosedXML.Excel.XLWorkbook.LoadSheets(String fileName)
       場所 ClosedXML.Excel.XLWorkbook.Load(String file)
       場所 ClosedXML.Excel.XLWorkbook..ctor(String file, XLEventTracking eventTracking)
       場所 ClosedXML.Excel.XLWorkbook..ctor(String file)
       場所 ConsoleApplication3.Program.Main(String[] args) 場所 C:\UserFiles\VisualStudioProject\2012\TestSln2013\ConsoleApplication3\Program.cs:行 17
       場所 System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       場所 System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       場所 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       場所 System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

はて
(∩; -`д-´)∩

こんなExcelファイル(イメージ)
f:id:orzmakoto:20151201155048p:plain

環境

ClosedXML 0.76.0.0
DocumentFormat.OpenXml 2.5.5631.0
.Net 4.5.1

原因

シートの中に表が設定されています。
※水色のストライプの綺麗な表
表が設定されている状態で、ヘッダ行が追加されていなかったので該当の例外が発生していました。
f:id:orzmakoto:20151201155723p:plain

対処

ヘッダ行追加もしくは、表の解除

ちなみにエラーメッセージをぐぐってGitHubのソースに行き着いて原因がわかりました。

gHowlComponents/XLTable.cs at master · gHowl/gHowlComponents · GitHub