【问题标题】:After saving xlsx file using NPOI, when I open xlsx file, it says file corrupt使用 NPOI 保存 xlsx 文件后,当我打开 xlsx 文件时,它说文件损坏
【发布时间】:2016-12-12 21:23:57
【问题描述】:
xlWorksheet.GetRow(1).GetCell(2).SetCellValue("Hello");
using (FileStream file = new FileStream("Test.xlsx", FileMode.Create, FileAccess.Write))
{
   XLWorkBook.Write(file);
   file.Close();
}

我用这段代码编写了excel文件。编写excel后,当我手动打开excel文件时,它已损坏。 我正在使用 NPOI 二进制 2.1.3.1 请告诉如何避免excel被损坏。

【问题讨论】:

  • using (),不需要file.Close(),它会自动关闭
  • 你的xlWorkseet是什么类型的?
  • 是否有人使用 NPOI 使用 Xlsx 编写 excel 表。我需要开源 dll 来访问 xlsx 文件。他们有任何可用的替代开源软件吗..
  • 来自 Microsoft 的 OpenXml SDK。它是免费的并且非常强大。但是 NPOI 也应该与 xlsx 一起使用,就像 xls 一样。见stackoverflow.com/questions/16079956/…

标签: c# npoi


【解决方案1】:

尝试在file.Close(); 之前添加file.Flush();

xlWorksheet.GetRow(1).GetCell(2).SetCellValue("Hello");
using (FileStream file = new FileStream("Test.xlsx", FileMode.Create, FileAccess.Write))
{
   XLWorkBook.Write(file);
   file.Flush();
   file.Close();
}

【讨论】:

  • 它不工作。当我使用flush时,如果我使用循环写excel,它不允许我写excel文件
  • @Kriez:您的代码不包含循环。请调整您的问题以显示您的真实代码。
  • 我已经用一种方法编写了上面的代码,我会多次调用方法。是他们在 NPOI 中保存 xlsx 的错误吗?因为 xls 文件对上面的代码很好。
【解决方案2】:

我不建议在重复循环中使用 file.Close()。

另外,我建议打开文件,进行循环,然后刷新并关闭文件。

这种方法在时间方面要好得多,因为重复打开和关闭文件会消耗大量时间,并且每次都需要访问驱动器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多