我正在尝试将OpenXML word文档嵌入到另一个OpenXML word文档中,并且它正在创建损坏的文件。我已经查看了这篇文章 http://blogs.msdn.com/b/brian_jones/archive/2009/06/30/embedding-an-open-xml-file-in-another-open-xml-file.aspx这个堆栈溢出Embedding an OpenXML document within another OpenXml document,我想我正按照说明操作,但我得到的结果不一样。
我的代码看起来像这样。
foreach (KeyValuePair<string, byte[]> docKV in files)
{
var embeddedPackagePart = document.MainDocumentPart.AddNewPart<EmbeddedPackagePart>("application/vnd.openxmlformats-officedocument.wordprocessingml.document", "rfp" + docKV.key);
var stream = new MemoryStream(docKV.Value);
embeddedPackagePart.FeedData(stream);
stream.Close();
}
所以基本上我循环遍历存储在字典中的文件列表并嵌入每个文件。我删除了创建实际OpenXML标记的代码,以链接到嵌入对象以尝试缩小错误。据我所知,实际的嵌入是造成问题的原因。
我还使用OpenXML SDK Productivity工具打开了生成的文档,它缺少我在手动嵌入文件的文档中看到的embeddings部分。
对我做错了什么的想法?
答案 0 :(得分:0)
您可以阅读Merging word processing documents。示例代码也可用。
答案 1 :(得分:0)
我想出了这个问题。在处理WordprocessingDocument之前,我没有调用WordprocessingDocument.Close。如果要添加新的文档部分,则必须调用Close()以便将其写入基础流。