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

我有一段代码,目前写入.xls工作簿( HSSFWorkbook ),没有任何问题。 但是,当我尝试使用相同的代码写入.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: NPOI 2.1.3.1

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

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

这解决了保存回到XssfWorkbook的主要问题。