如何将样式从模板复制到另一个文档

How can I copy styles from a template to another document

我想通过 VSTO Word 加载项中的命令从 Word 模板文件夹或我喜欢的任何其他文件夹复制模板样式,并将复制的样式传递到文档。

请问我该怎么做。我一直在搜索并发现这是可能的,但未能获得有关用于此的 c# 代码的丝毫提示。

基本上有两种方法可以将样式从模板复制到在 Word 中打开的文档中。一种是使用管理器(最初用于 Word Basic,所以有点原始),另一种是将带有样式的模板附加到文档,然后强制更新样式。

第一个只允许选择特定样式,但它也意味着 运行 每个样式的单独副本。请注意,样式由 本地化名称 指定 - 没有使用与语言无关的 wdBuiltinStyle 枚举的选项。

第二个强制文档适应所有源模板中的样式。它具有 "side effect" 还可以通过 link 使任何构建块、键盘快捷键和宏可用于文档。通过原始模板提供的任何这些东西都将不再可用。这最后一个可以通过重新附加原始模板 而无需 更新样式来解决(参见第二个代码示例)。

组织者

    private void btnCopyStyles_Organizer_Click(object sender, EventArgs e)
    {
        string tmplPath  = @"C:\Test\StylesTemplate.dotm";
        string[] aStyles = {"Heading 1", "Heading 2" };

        for (int i = 0; i == aStyles.Length- 1; i++)
        {
            wdApp.OrganizerCopy(tmplPath, wdApp.ActiveDocument.FullName, aStyles[i],
                Word.WdOrganizerObject.wdOrganizerObjectStyles);
        }
    }

附加模板

    private void btnCopyStyles_AttachTemplate_Click(object sender, EventArgs e)
    {
        string tmplPath  = @"C:\Test\StylesTemplate.dotm";
        Word.Document doc = wdApp.ActiveDocument;
        doc.set_AttachedTemplate(tmplPath);
        doc.UpdateStyles();
    }