OpenXML - 如何将spreadsheetdocument保存到流?

时间:2015-04-20 20:51:34

标签: c# excel spreadsheet openxml

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

我有一个保存方法,理想情况下我可以将SpreadsheetDocument保存到流中。有document..WorkbookPart.Workbook.Save(stream);但只是给我一个空文件,当我只保存第一张表时(使用document.WorkbookPart.WorksheetParts.First().Worksheet.Save(stream);文件很乱并且不包含相关信息。如何保存电子表格文档到流?

2 个答案:

答案 0 :(得分:1)

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

我的问题是我需要将流位置设置回零。

stream.Position = 0;

从我的实验中,保存电子表格后流的位置是流的结尾。当我将流输出到Web浏览器时,它从当前位置启动流并运行到结束而不是从开始。我认为这与框架中的其他API一致。

答案 1 :(得分:0)

根据文档,SpreadsheetDocument.Close 保存并关闭OpenXml包以及所有底层部分流。

<强>更新 您是否尝试过保存基础流本身?

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