【问题标题】:Can't open excel file generated with excelLibrary无法打开使用 excelLibrary 生成的 excel 文件
【发布时间】:2011-11-12 21:14:41
【问题描述】:

我正在使用excelLibrary 以编程方式创建 Excel 文件,但是当我尝试在 Microsoft Office Excel 中打开生成的文件时出现文件格式错误。

我见过this has been reported,但仍然没有答案。

我使用 Office 2010,可以打开任何其他 .xls(97-2003 文件格式),但使用 excelLibrary 生成的除外。我也尝试过 Open Office,但仍然无法打开生成的文件。我没有尝试在 Office 97-2003 中打开它们。

只需尝试sample code 即可重现错误。

有没有人发现如何使用该库而没有遇到这个问题?

【问题讨论】:

  • 不确定该错误,但是该库不支持 2007 / 2010,也许看看更新的东西? netoffice.codeplex.com
  • 我找到了解决方案,请参阅我的新答案。
  • 试试EPPlus。它需要 .NET 3.5,但非常棒且非常强大。它使用 OpenOfficeXml。

标签: c# excel excellibrary


【解决方案1】:

找到了解决办法:

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

【讨论】:

  • 成功了!但是 256 列的限制太严格了(Excel 97?)太糟糕了,我真的更喜欢 LGPL 许可证而不是 Apache。在下面试用 NPOI。
  • 你是我的英雄
【解决方案2】:

很遗憾,使用 excelLibrary 导出的 excel 文件与 office 2010 Excel 不兼容,这是一个已报告的问题,但似乎库开发不再活跃。

我已经切换到NPOI

【讨论】:

  • +1 用于 NPOI,请注意 NPOI API 在样式上非常冗长,需要您不断创建*内容,尤其是在格式化方面。此外,他们的名字缩写真的很糟糕,让智能感知几乎毫无用处,直到你记得你想要的东西叫做“HSSF”。
  • 是的。试试EPPlus。它需要 .NET 3.5,但非常棒且非常强大。它使用 OpenOfficeXml。
【解决方案3】:

由于工作表名称未正确给出,因此引发了该错误。

一旦我们给工作表起一个名字,它就会正常工作。

【讨论】:

    猜你喜欢
    • 2013-11-05
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2018-04-01
    • 2020-09-23
    • 1970-01-01
    相关资源
    最近更新 更多