DotNetCore.NPOI 如何保存 Excel

作者:vkvi 来源:千一网络(原创) 日期:2020-8-18

假如读取了磁盘上某 Excel 文件,利用 DotNetCore.NPOI 操作。

但是如何保存回磁盘呢?

以下两种操作皆无法保存:

XSSFWorkbook workbook = new XSSFWorkbook(path);
workbook.GetSheetAt(0).GetRow(0).GetCell(0).SetCellValue(new DateTime(2020, 1, 1));
workbook.Close(); // 此处应该 Close

using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite))
{
	XSSFWorkbook workbook = new XSSFWorkbook(fs);
	workbook.GetSheetAt(0).GetRow(0).GetCell(0).SetCellValue(new DateTime(2020, 1, 1));
	// 此处 Close 与否皆可,因为 fs 是放在 using 中的,Dispose 时会自动 Close 流。
	// workbook.Close();
	// fs.Close();
}

可以保存的方法:

XSSFWorkbook workbook = new XSSFWorkbook(path);
workbook.GetSheetAt(0).GetRow(0).GetCell(0).SetCellValue(new DateTime(2020, 1, 3));
workbook.Write(null);
workbook.Close();

增加一句:workbook.Write(null)。

如果这里 Write 的参数不是 null,而是另一个文件流,则两个文件都会保存起来。

我不知道是不是 BUG,总之,只要一调用 Write 就会对当前流、目标流进行保存。

相关文章