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

问题描述 投票:1回答:1

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

请执行该操作。我一直在搜索,并看到有可能,但未能获得有关用于此目的的C#代码的丝毫提示。

c# ms-word vsto word-addins
1个回答
0
投票

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

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

第二个强制文档调整源模板中的all样式。它具有“副作用”,即通过链接到模板,还可以使任何Building Block,键盘快捷键和宏对文档可用。通过原始模板提供的所有这些东西将不再可用。可以通过在执行此操作后重新附加原始模板without来更新样式来补救最后一个问题(请参阅第二个代码示例)。

组织者

    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();
    }
© www.soinside.com 2019 - 2024. All rights reserved.