【发布时间】:2011-05-22 22:14:19
【问题描述】:
我有这样的方法来从存储为二进制的 db 加载文档文件,然后用参数替换 customxml 部分。
不知何故,当我将字节转换为 MemoryStream 然后处理它不起作用时,我的自定义 xml 部分没有被替换。但是,如果我使用 FileStream 并从磁盘读取相同的文件,那么它会完美替换!
MemoryStream 有什么问题?我也不能将 MemoryStream 转换为 FileStream 或创建 Stream 等的实例。 有什么建议吗?
private static Stream LoadContent(byte[] content, XmlDocument parameters)
{
//FileStream works perfectly
//Stream fileStream = new FileStream(@"C:\temp\test.docx", FileMode.Open);
Stream documentStream = new MemoryStream();
documentStream.Write(content, 0, content.Length);
//Processes word file, replace custom xml parts with parameters
using (WordprocessingDocument document = WordprocessingDocument.Open(documentStream, true))
{
MainDocumentPart mainPart = document.MainDocumentPart;
Stream partStream = mainPart.CustomXmlParts.First().GetStream();
using (XmlWriter xmlWriter = XmlWriter.Create(partStream, new XmlWriterSettings { CloseOutput = false }))
{
parameters.WriteTo(xmlWriter);
xmlWriter.Flush();
}
mainPart.Document.Save();
}
return documentStream;
}
【问题讨论】:
标签: c# .net stream openxml memorystream