当前位置: 首页 > 知识库问答 >
问题:

NPOI-写入文件损坏. xlsx工作簿

万俟渝
2023-03-14

我有一段代码,目前正在写入一个。xls工作簿(HSSF工作簿)没有问题。然而,当我试图使用相同的代码来写一个<代码>。xlsx工作簿(XSSFWorkbook)存档文件已损坏,无法在excel中打开。

下面的代码是我用来访问工作簿、编辑工作簿,然后保存回工作簿的代码。我最初认为我用来编辑工作簿的代码是问题所在,但在注释掉它后,问题仍然存在。

IWorkbook workbook;
using (var file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    if (Path.GetExtension(fileName).Contains("xlsx"))
    {
        workbook = new XSSFWorkbook(file);
    }
    else
    {
        workbook = new HSSFWorkbook(file);
    }
}

//Code that edits workbook which is currently commented out

using (var file = new FileStream(path, FileMode.Open, FileAccess.ReadWrite))
{
    workbook.Write(file);
}

我尝试在空白. xlsx工作簿上运行此代码,但文件已损坏,无法再打开。

我使用的是nuget的NPOI的最新稳定版本:NPOI2.1.3.1


共有1个答案

柳俊健
2023-03-14

在尝试了NPOI的Codeplex上提到的所有内容都没有用之后,我尝试了混用FileStream属性,并且能够得到空白的。保存xslx。我使用以下代码写回文件:

using (var file = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
    workbook.Write(file);
}

这修复了将返回保存到XssfWorkbook的主要问题。

 类似资料:
  • 我是JAVA新手。我需要将特定文件夹中的多个文件加载到excel xlsx(不是xls文件,因为输入文件有超过65k记录)文件的不同工作表中。下面是我编写的代码。xlsx文件损坏了,无法打开。你能帮忙吗? 4月27日编辑:工作代码,但存在性能问题。

  • 在这件事上有困难。。。 使用XLS,一切都能100%正常工作(我在我的ASP.NET应用程序上使用NPOI): 需求发生了变化,新的Excel模板使用了XLSX的功能,因此它现在是<代码>模板。xlsx。我一直在使用NPOI 2.0,我看到它支持XLSX(使用XSSF而不是HSSF)。我这样更改了代码(这里只显示了差异-其他内容都是一样的): 在工作簿的第行抛出异常。写入(ms) : 我可能做错了

  • Docx4J生成的Excel工作簿总是说损坏了,但我无法确定Excel不喜欢底层XML的什么,更不用说如何修复它了。 我的用例如下:我试图定期自动生成一个带有图表和图形的excel工作簿。只有原始数据会改变,但随着原始数据的改变,其他一切都会动态更新。 null null 在我的空白工作簿之前和之后 欢迎所有的想法。

  • 我有以下代码要写入现有的XLSX文件 使用XLS文件,效果非常好。 请帮忙。 你好,雷纳多

  • 我正在使用ApachePOI,我创建了一个XSSF工作簿,并尝试打开一个xlsx文件。它在当地的一个地方很有效。但是,当我用Excel打开真正服务器(AWS EC2、Tomcat8、JDK 1.8)上的Excel文件时,它显示文件已损坏(.xls工作)。这是我的代码: 本地Spring4, jdk1.8, tomcat 8.0, maven 真正的AWS EC2亚马逊linux2,jdk1。8、t

  • 问题内容: 有写Excel 2007+文件的Python模块吗? 我对编写长度超过65535行的文件感兴趣,只有Excel 2007+支持它。 问题答案: 您可以查看两个库。 Python-xlsx和 PyXLSX 编辑:正如评论所提到的,编写时请检查openpyxl