我有一段代码,当前正在写入.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
答案 0 :(得分:6)
尝试NPOI's Codeplex上提到的所有内容后无效,我尝试弄乱FileStream
属性,并且能够获得空白.xslx
以保存。我使用以下代码写回文件:
using (var file = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
workbook.Write(file);
}
这解决了将后退保存为XssfWorkbook
的主要问题。