【发布时间】:2010-03-17 19:28:29
【问题描述】:
我正在尝试使用 OpenXML SDK 2.0 将两个 docx 文档合并为一个 docx 文档。文档应该在不丢失样式和自定义页眉和页脚的情况下合并。我希望我可以使用AltChunk 和分节符来实现这一点。但我无法让它工作。
这可能是我想要做的吗?有人可以给我一个提示如何实现这一点吗?
【问题讨论】:
标签: c# openxml openxml-sdk
我正在尝试使用 OpenXML SDK 2.0 将两个 docx 文档合并为一个 docx 文档。文档应该在不丢失样式和自定义页眉和页脚的情况下合并。我希望我可以使用AltChunk 和分节符来实现这一点。但我无法让它工作。
这可能是我想要做的吗?有人可以给我一个提示如何实现这一点吗?
【问题讨论】:
标签: c# openxml openxml-sdk
上面的答案根本不正确!这正是 AltChunk 的设计初衷,而且效果很好!
注意:文档不会合并到一个文档中,直到 Word 第一次打开文件(显然必须保存文件,否则磁盘上的文件将不会更新。)
有关如何正确执行此操作的更多信息,请参阅此博客: https://blogs.msdn.com/b/ericwhite/archive/2008/10/27/how-to-use-altchunk-for-document-assembly.aspx?Redirected=true
附言至于使用生产力工具检查 Open XML,我的意见是安装官方的 Visual Studio Open XML 插件,然后从 Visual Studio 中打开 Office 文档进行检查,超级方便! :-)
【讨论】:
使用“Open XML Productivity Tool”,我分析了 docx 文档的结构,并得出结论,使用 Altchunk 将文档与其样式、页眉、页脚等合并是不可能的。您可以从open xml sdk 单独下载该工具。
我现在正在做的以及正在工作的是将所有内容手动复制到文档中,确保所有样式引用、页眉引用、页脚引用……都被保留。这意味着在将它们复制到文档中并将所有引用从旧 id 更改为新 id 之前,我会给它们一个新的唯一 id。有很多代码可以做到这一点,但上面提到的工具确实有帮助。
添加分节符也相当困难。你应该知道SectionProperties-tag 描述了该section 的所有属性,并且SectionProperties-tag 在Body-tag 下可以有一个SectionProperties-tag,描述最后一个section 的属性。所以添加一个新的分节符,意味着将最后一个SectionProperties-tag 复制到该节的最后一段,并在Body-tag 下添加一个新的SectionProperties-tag。我还从生产力工具中获得了很多信息。
【讨论】: