【问题标题】:Cannot embed an openXML document inside another using OpenXML SDK无法使用 OpenXML SDK 将 openXML 文档嵌入到另一个文档中
【发布时间】:2012-05-08 13:27:25
【问题描述】:

我正在尝试将 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 工具打开了生成的文档,但它缺少我在手动嵌入文件的文档中看到的嵌入部分。

对我做错了什么有什么想法吗?

【问题讨论】:

    标签: c# .net openxml


    【解决方案1】:

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

    【讨论】:

    • 这不是我想要的。我不想合并文档,而是想将文档 B 嵌入到文档 A 中,就像选择“插入 --> 对象”菜单选项时嵌入对象的方式一样。
    【解决方案2】:

    我发现了这个问题。在处理 WordprocessingDocument 之前,我没有调用 WordprocessingDocument.Close。如果要添加新的文档部分,则必须调用 Close() 才能将其写入底层流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多