繁体   English   中英

将多种Word文档样式合并到一个Open Xml中

[英]Merge multiple Word Document styles into one Open Xml

我目前正在一个项目中,将3个文档合并为一个新文档。 为了添加它们,我正在创建一个AltChunk方法来包含文档。

我的问题是这三个样式之间存在冲突。 那样的话,我的意思是我将一个表保存在下面,表中带有红色文本。 但是,一旦三者合并成新的,该文档的样式将重置为纯黑色文本。 有没有办法将这三个样式合并到这个新文档中?

以下是我如何合并文档的代码(由于目前所有内容都还不错,所以我没有显示顶部)。

using (WordprocessingDocument package = WordprocessingDocument.Create(fileName, DocumentFormat.OpenXml.WordprocessingDocumentType.Document))
{
    ...
    #region Append Non-Standard Section Template
    var nssAltChunkId = "AltChunkIdNSS" + this.AopPlanId.Value.ToString();
    var nssChunk = package.MainDocumentPart.AddAlternativeFormatImportPart(
                     AlternativeFormatImportPartType.WordprocessingML, nssAltChunkId);
    using (var fileStream = new MemoryStream(nssBuffer))
    {
        nssChunk.FeedData(fileStream);
    }

    var nssAltChunk = new DocumentFormat.OpenXml.Wordprocessing.AltChunk();
    nssAltChunk.Id = nssAltChunkId;
    package.MainDocumentPart.Document.Body.InsertAfter(nssAltChunk, package.MainDocumentPart.Document.Body.Elements<Paragraph>().Last());
    #endregion

    ... //Next 2 documents are the same way

    package.MainDocumentPart.Document.Save();
}

任何帮助,将不胜感激。 谢谢。

编辑:我改为从PowerTools使用DocumentBuilder,但是,这仍然不能解决合并样式的问题。 任何建议,将不胜感激。

Word对格式(“样式”)进行的操作取决于格式的来源以及Word中固有的算法,即如何处理格式冲突。 根据您提供的信息,很难准确了解这些文档的情况,但是这里有一些经验法则:

  1. Word将保留直接格式(例如单击粗体或斜体)

  2. 当传入文档的样式与目标文档中已经存在的样式同名时,传入样式将采用目标文档中样式的定义。 这是设计使然,因为Word被认为是文档生产工具,而不是归档工具。

我猜想(2)就是您所面对的情况。 保留样式定义的唯一方法是,首先给样式指定不同的名称/定义不同的样式集,然后将其应用于文本以代替现有样式。 例如,如果两个文档的“普通”样式定义不同,则需要将样式定义复制到新样式(例如,“ Normal1”),然后将构成文档的各个部分中用于普通样式的ID替换为用于Normal1的ID。

我从未尝试过的方法是重命名Normal的ID和名称,这样您就不需要最后一步了。 但是您可能必须使用“旧”的ID和名称来创建普通样式,因为Word希望它在文档中。 (但是您可以尝试不使用它,因为Word可能会自动创建它而不会认为文档无效)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM