【问题标题】:Merge documents合并文件
【发布时间】:2010-03-17 19:28:29
【问题描述】:

我正在尝试使用 OpenXML SDK 2.0 将两个 docx 文档合并为一个 docx 文档。文档应该在不丢失样式和自定义页眉和页脚的情况下合并。我希望我可以使用AltChunk 和分节符来实现这一点。但我无法让它工作。

这可能是我想要做的吗?有人可以给我一个提示如何实现这一点吗?

【问题讨论】:

    标签: c# openxml openxml-sdk


    【解决方案1】:

    上面的答案根本不正确!这正是 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 文档进行检查,超级方便! :-)

    【讨论】:

    • 也适用于 mee,尽管与 Word LibreOffice 相比,它似乎忽略了 altChunks。
    【解决方案2】:

    使用“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。我还从生产力工具中获得了很多信息。

    【讨论】:

    • 你能贴出代码吗 :-) 一些容易理解的例子 :>
    • Jelle 的经历与我的经历如出一辙。这不是一件容易的事,它需要的代码比你想象的要多得多。由于您必须防止两个 Id 名称发生冲突,因此保持样式笔直尤其困难。
    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2018-12-11
    • 2015-11-10
    • 2011-03-27
    • 2012-05-15
    • 2016-11-17
    • 2013-06-28
    相关资源
    最近更新 更多