可以在不调用 Close() 的情况下保存 OpenXML 电子表格吗?

Possible to save OpenXML Spreadsheet without calling Close()?

我正在使用 OpenXML 编写电子表格实用程序,并且需要能够定期(甚至在每次单元格更新时)保存 文档。保存后,文档必须处于有效(可读)状态。

之前,我看到的唯一例子是文档处于损坏状态
document.Close();

被调用。即使定期调用

worksheet.Save();

在调用 Close() 之前,文档将被破坏。

我需要快速能够即时保存文档,因为文档将打开很长时间,经常写入,如果程序崩溃,我需要能够访问任何在程序 运行 时写入的数据(显然我不能依赖 Close() 被调用)。

我不一定需要使用低级 OpenXML 来实现它,但我尝试过的所有包装器(ClosedXml、NPOI)似乎都有同样的缺点。

使用 the following 打开文档。

using (SpreadsheetDocument document = SpreadsheetDocument.Open(docName, true))
{
}

当您指定 true 时,流被标记为可编辑,并且可以即时接受编辑。

确保您阅读了 this 文章,该文章将为您提供一些关于如何使用打开的 XML 流的示例。