C# 使用NPOI编辑和保存xlsx会导致文件损坏

C# 使用NPOI编辑和保存xlsx会导致文件损坏,c#,excel,xlsx,npoi,C#,Excel,Xlsx,Npoi,新文件已创建但已损坏。我看到有人说这在版本2.0.6中已经修复,但仍然不适用于我。看起来您正在使用@myPath作为代码第1行的共享/文件名来创建流,但您将文件名连接到@myPath以保存文件。这可能是错误的来源吗?如果我不连接,它只会被覆盖,并持续出现相同的问题。问题在于SharpLibZip的Zip64格式。如果手动解压并重新压缩损坏的xlsx文件,它会正常工作。或者您可以在代码中关闭Zip64。我可以用NPOI的2.1.3.1版本确认@DenisD的发现:当我手动解压和重新压缩文件时,MS

新文件已创建但已损坏。我看到有人说这在版本2.0.6中已经修复,但仍然不适用于我。

看起来您正在使用@myPath作为代码第1行的共享/文件名来创建流,但您将文件名连接到@myPath以保存文件。这可能是错误的来源吗?

如果我不连接,它只会被覆盖,并持续出现相同的问题。问题在于SharpLibZip的Zip64格式。如果手动解压并重新压缩损坏的xlsx文件,它会正常工作。或者您可以在代码中关闭Zip64。我可以用NPOI的2.1.3.1版本确认@DenisD的发现:当我手动解压和重新压缩文件时,MS Excel 2013很高兴。
FileStream s = new FileStream(@myPath, FileMode.Open, FileAccess.ReadWrite);
IWorkbook wb = new XSSFWorkbook(s);
s.Close();

ISheet isheet = wb.GetSheetAt(0);
IRow irow = isheet.CreateRow(0);
irow.CreateCell(0).SetCellValue("foo");

s = new FileStream(@myPath + "blah.xlsx", FileMode.Create);
wb.Write(s);
s.Close();