【问题标题】:Can't edit the existing Excel file with NPOI?无法使用 NPOI 编辑现有 Excel 文件?
【发布时间】:2019-07-29 16:55:16
【问题描述】:

我尝试使用 NPOI 创建一个新的 Excel 文件,它可以正常工作,读取(仅)一个 Excel 文件也可以。但是现在我想打开一个现有的 Excel 文件并在其上附加一些行,它在 NPOI.HSSF.UserModel.HSSFWorkbook 构造函数的代码行中崩溃了。代码如下:

using(FileStream fs = new FileStream(myFile, FileMode.Append)){
    HSSFWorkbook wb = new HSSFWorkbook(fs); //<-- It is crashed right at here
    ....
}

没有异常细节,只是显示一个窗口说应用程序崩溃并提供3个选项可供选择,中间一个是关闭应用程序:
snapshot
这就是为什么我无法理解并且很难解决它的原因。

如果我将 FileMode 更改为 FileMode.Open,构造函数可以正常工作,但这只是为了阅读。我认为有一些与 FileAccess 政策相关的事情并尝试了这个:

using(FileStream fs = new FileStream(myFile, FileMode.Append, FileAccess.ReadWrite)){//<-- However it is crashed right at here
    HSSFWorkbook wb = new HSSFWorkbook(fs); 
    ....
}

我尝试了一种解决方法,方法是打开(只读)现有的 Excel 文件,复制其中的 1 张并将此表添加到新的 HSSFWorkbook 并写入(只写)到新的文件流,但是没有办法要做到这一点,因为 HSSFWorkbook 没有 Worksheet 的集合,也没有 Add 方法,所以新工作表只是由 CreateSheet() 方法创建的。好烦啊。

你能帮我解决这个问题吗?我先尝试 NPOI,然后再尝试 EPPlus。
非常感谢您的帮助。
谢谢。

【问题讨论】:

  • 什么是 NPOI 和 EPPlus?
  • NPOI 是一个非常有名的开源库,它只支持处理 *.xls 文件。虽然 EPPlus 是另一个非常知名的开源库,但它只支持 *.xlsx 文件。使用这两个库来处理 *.xls 和 *.xlsx。您不需要安装 Office,而且我听说这些库对 Open SDK 和 Office 自动化有更好的性能,尤其是我喜欢 EPPlus。写入速度更快。您应该搜索更多信息,建议将它们都用于与 Excel 相关的项目,尤其适用于 Web 应用程序。

标签: c# export-to-excel npoi


【解决方案1】:

你的文件格式是什么? xls 还是 xlsx?如果是 xlsx,您现在可以尝试 NPOI 2.0。支持 xlsx。 这是下载链接:https://npoi.codeplex.com/releases/view/112932

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2021-12-22
    • 2018-01-08
    相关资源
    最近更新 更多