【问题标题】:How can I copy styles from a template to another document如何将样式从模板复制到另一个文档
【发布时间】:2020-02-04 09:00:32
【问题描述】:

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

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

【问题讨论】:

    标签: c# ms-word vsto word-addins


    【解决方案1】:

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

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

    第二个强制文档适应源模板中的所有样式。它还具有“副作用”,即通过模板的链接使任何构建块、键盘快捷键和宏都可用于文档。通过原始模板提供的任何这些东西都将不再可用。这最后可以通过重新附加原始模板在这样做后更新样式来解决(参见第二个代码示例)。

    组织者

        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();
        }
    

    【讨论】:

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