c# - 如何将样式从模板复制到另一个文档
问题描述
我想通过 VSTO Word 插件中的命令从 Word 模板文件夹或我喜欢的任何其他文件夹中复制模板的样式,并将复制的样式传递给文档。
请问我该怎么做。我一直在搜索并看到这是可能的,但无法获得有关用于此的 c# 代码的丝毫提示。
解决方案
基本上有两种方法可以将样式从模板复制到在 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();
}
推荐阅读
- php - 有没有办法对 CodeIgniter url 进行编码?
- android - 反应原生谷歌在应用程序中放置自动完成 npm 包跟踪整页
- c# - 如何通知 ReSharper 我已初始化 [NotNull] 字段?
- android - 如何使用 Volley 库解析嵌套的 json 数组?
- botframework - 登录活动后 OAuthCard 未返回令牌
- angular - 如何访问在角度端收到的 JSON 对象?
- sql - PostgreSQL 等效于 SQL Server NVARCHAR (MAX)
- api - 我们还可以使用永久链接为多个产品指定每个产品的数量吗?
- android - 应用打开时通知不显示
- emacs - 当我按 C- 时,Emacs 没有反应。(点/句点)