2012-09-25 77 views
0

我已經在網上尋找這個解決方案,並找不到解釋我的問題的任何東西。LoadFromDataTable隨着TableStyles在重新打開Excel工作簿時創建一個錯誤

我使用vb.net(使用OfficeOpenXml)EPPLus和我的代碼看起來是這樣的:

Dim Package As New ExcelPackage 
Dim wks As ExcelWorksheet 
Dim dt As DataTable 

wks.Cells("A1").LoadFromDataTable(dt, True, TableStyles.Medium9) 

Dim SaveAs As New FileInfo([...somelocation.xlsx]) 
Package.SaveAs(SaveAs) 

現在,當我運行它,它工作得很好,並保存.xlsx文件通緝/預計。但是,當我嘗試在Excel中打開它時,出現以下錯誤消息:
「Excel中發現不可讀的內容...是否要恢復此工作簿的內容?」

如果我再點擊「是」,它打開了它完美的罰款,並給了我一個錯誤報告說: 「Excel能通過修復或刪除無法讀取內容打開文件」 有很多誤差修改的(一個每個數據表裝): 「修理記錄:從/xl/tables/table1.xml部分(表)表」

現在...如果我改變的代碼行從:

wks.Cells("A1").LoadFromDataTable(dt, True, TableStyles.Medium9) 

收件人:

wks.Cells("A1").LoadFromDataTable(dt, True) 

然後,一切都沒有任何錯誤很好地工作......

我在做什麼錯?

+0

...好,我是一步步接近 - 原來,我發現了一些在我的數據表中的列都導致了問題......但我無法找出原因... –

回答

0

...所以我想通了什麼我的問題是,我只是把它在這裏萬一有人是愚蠢的,因爲我是...

就我而言,我創建了數據表自定義這是分手了兩行以上如下列名:

dt.Columns.Add("First Line's Text" & vbCrLf & "Second Line") 

問題是vbCrLf - 我把它改爲:

dt.Columns.Add("First Line's Text" & vbLf & "Second Line") 

而錯誤消失:)

希望這可以節省別人所有的煩惱,我經歷了!

1

我有同樣的問題(至少相同的症狀),我的問題原來是因爲我有一個':'在我的DataTable.TableName。

我發現EPPlus在.xlsx文件的table1.xml中使用DataTable.TableName作爲displayName,並且它不支持':'字符。

我想通過比較損壞的輸出和Excel已修復的版本。您可以通過將它們打開爲.zip文件(將它們從.xlsx重命名爲.zip)來查看辦公文檔的基礎結構,然後您可以查看底層文件。在我的情況下,Excel將我指向了table1.xml文件,因此很容易找到。

我通過簡單地用'_'替換DataTable.TableName中的':'來解決這個問題。

希望這可能會幫助別人。

+0

我一個不同的問題,關鍵是你的建議做一個前後比較壓縮文件。謝謝! – gouldos

相關問題