OpenXML – 如何将电子表格文档保存到stream?

我从stream中获取.xlsx文档(使用SpreadsheetDocument.Open(stream, false)然后将其存储到Spreadsheetdocument字段中,以便稍后可以维护同一个对象。

我有一个保存方法,我应该在理想情况下能够将SpreadsheetDocument保存到一个stream。 有document..WorkbookPart.Workbook.Save(stream); 但是这只是给我一个空的文件,当我只保存第一张(使用document.WorkbookPart.WorksheetParts.First().Worksheet.Save(stream);该文件是一个混乱,不包含相关信息。将电子表格文档保存到stream中?

我知道这是有点老,但当我遇到同样的问题时,我偶然发现了问题,所以我想用我find的解决scheme更新它。

我的问题原来是,我需要设置stream的位置归零。

 stream.Position = 0; 

从我的实验中,一旦电子表格被保存,stream的位置就是stream的结束。 当我输出我的stream到networking浏览器时,它从当前位置开始stream并运行到结束,而不是从一开始就开始。 我会认为这是与框架中的其他API的一致。

根据文档, SpreadsheetDocument.Close 保存并closuresOpenXml包加所有底层部分stream。

更新:你有没有尝试保存底层的stream本身?

 File.WriteAllBytes(filename, stream.ToArray());