我在内存中有一个 System.IO.Packaging.Package(它是一个 WordprocessingDocument),并希望将其流式传输到浏览器以保存它。word 文档已被基于 MVC 的应用程序修改,并且生成的文件已针对当前请求进行了修改。
我知道这个包代表一个包含许多部分的“zip”文件。这些部分包括页眉、页脚和正文文档。我已经单独修改了每个,现在想将包流回给用户。
我可以获得各个部分流... package.GetPart(new Uri("/word/document.xml", UriKind.Relative)).GetStream()
但是我错过了如何在整个文档(包)上获取输出流 - 而无需写入文件系统。
提前致谢
不-我认为我需要的是这样的...我已经阅读了模板文档并在内存中进行了修改。现在我想将修改后的文档(保持模板不变)流回给用户。
MemoryStream stream = new MemoryStream();
WordprocessingDocument docOut =
WordprocessingDocument.Create( stream, WordprocessingDocumentType.Document);
foreach (var part in package.GetParts())
{
using (StreamReader streamReader = new StreamReader(part.GetStream()))
{
PackagePart newPart = docOut.Package.CreatePart(
part.Uri, part.ContentType );
using (StreamWriter streamWriter = new StreamWriter(newPart.GetStream(FileMode.Create)))
{
streamWriter.Write(streamReader.ReadToEnd());
}
}
}
不幸的是 - 这会产生一个“腐败”的word文档......