通过使用OpenXML操作Word文档(作为模板),服务器应用程序将新内容保存为临时文件,然后将其发送给用户下载。
问题是如何使这些内容准备好下载而不将其作为临时文件保存在服务器上?是否可以将OpenXML结果保存为文件,byte[]
或者Stream
将其保存为文件?
通过使用OpenXML操作Word文档(作为模板),服务器应用程序将新内容保存为临时文件,然后将其发送给用户下载。
问题是如何使这些内容准备好下载而不将其作为临时文件保存在服务器上?是否可以将OpenXML结果保存为文件,byte[]
或者Stream
将其保存为文件?
您可以创建 WordprocessingDocument,然后使用该Save()
方法将其保存到Stream
.
使用此页面: 没有临时文件的 OpenXML 文件下载
我将代码更改为以下代码:
byte[] result = null;
byte[] templateBytes = System.IO.File.ReadAllBytes(wordTemplate);
using (MemoryStream templateStream = new MemoryStream())
{
templateStream.Write(templateBytes, 0, (int)templateBytes.Length);
using (WordprocessingDocument doc = WordprocessingDocument.Open(templateStream, true))
{
MainDocumentPart mainPart = doc.MainDocumentPart;
...
mainPart.Document.Save();
templateStream.Position = 0;
using (MemoryStream memoryStream = new MemoryStream())
{
templateStream.CopyTo(memoryStream);
result = memoryStream.ToArray();
}
}
}