无法使用OpenXML SDK将openXML文档嵌入到另一个文档中

时间:2012-05-08 13:27:26

标签: c# .net openxml

我正在尝试将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部分。

对我做错了什么的想法?

2 个答案:

答案 0 :(得分:0)

您可以阅读Merging word processing documents。示例代码也可用。

答案 1 :(得分:0)

我想出了这个问题。在处理WordprocessingDocument之前,我没有调用WordprocessingDocument.Close。如果要添加新的文档部分,则必须调用Close()以便将其写入基础流。