2011-11-12 112 views
12

我使用excelLibrary以編程方式創建excel文件,但當我嘗試在Microsoft Office Excel中打開生成的文件時出現文件格式錯誤。我看過this has been reported,但仍然沒有答案。無法打開使用excel庫生成的excel文件

我使用Office 2010,我可以打開任何其他.xls(97-2003文件格式),但使用excelLibrary生成的。我也試過Open Office,但仍然無法打開生成的文件。我還沒有試圖在Office 97-2003中打開它們。

只需嘗試sample code即可重現錯誤。

有沒有人發現如何使用庫,而不是遇到這個問題?

+0

不知道錯誤,但該庫不支持2007/2010年,也許看看更新的東西? http://netoffice.codeplex.com/ – Kane

+0

我找到了解決方案,請參閱我的新答案。 – aleroot

+0

試試[EPPlus](http://epplus.codeplex.com)。它需要.NET 3.5,但功能非常強大。它使用OpenOfficeXml。 –

回答

39

實測值的溶液:

string filename = "c:\Test.xls"; 
Workbook workbook = new Workbook(); 
Worksheet sheet = new Worksheet("Test") 
workbook.Worksheets.Add(sheet) 

for(int i = 0;i < 100; i++) 
     sheet.Cells[i,0] = new Cell(""); 

workbook.save(filename); 

的問題是,Office 2010不支持它,除非有 100個或更多的細胞填充。

我的工作是讓它在「for」循環中填充100個單元格。 通過這種方式,它獲得了100個細胞數量,然後它工作得很好。

參考:here

+0

+1太棒了!我正在尋找這個,謝謝! – Somebody

+0

謝謝你..你救了3個人的生命 – Sayka

+0

工作!但256列限制太嚴格了(Excel 97?)太糟糕了,我真的比LGPL更喜歡LGPL許可證。嘗試下面的NPOI。 – user922020

5

不幸的是excel文件與excelLibrary導出與Office 2010 Excel不兼容,這是一個已經報告的問題,但似乎庫開發不再活躍。

我已改用NPOI

+0

+1爲NPOI,只是要知道,NPOI API是相當詳細的風格,要求你不斷創建*的東西,特別是當涉及到格式。此外,他們的名字縮寫真的很糟糕,使智能感知幾乎無用,直到你記住你想要的東西被稱爲「HSSF」。 –

+1

是的。試試[EPPlus](http://epplus.codeplex.com)。它需要.NET 3.5,但功能非常強大。它使用OpenOfficeXml。 –

-1

由於工作表名稱不正確,則此次拋出的錯誤。

一旦我們給表單一個名字,它就會正常工作。