使用 C# 将预定义样式附加到 Word 书签
Append predefined style to a Word bookmark with c#
我尝试为书签设置文本和预定义样式。文本很好,但未设置样式。这个来源有什么问题吗?:
Word.Application word = new Word.Application();
word.Visible = true;
Word.Document doc = word.Documents.Open("bookmark.dotx");
doc.Activate();
Word.Paragraph paragraph = doc.Bookmarks["navigatorHeadlineBookmark"].Range.Paragraphs.Add();
paragraph.Range.Text = "hello headline";
paragraph.Range.set_Style("navigatorHeadline");
//Debug
paragraph.Range.Select(); //selects the expected text (hello headline)
Word.Selection selection = word.Selection;
selection.set_Style("navigatorHeadline"); //style is not set :-(
总结最终得出答案的故障排除步骤:
1. 首先,确保书签在文档中并且包含正确的text/range。
2. 检查样式名称是否拼写正确,记住 Word 处理样式名称时区分大小写
3. 直接格式和字符样式将覆盖段落样式的格式。
这最后被证明是样式格式没有出现的原因:文本是用超链接样式格式化的。这是一种字符样式,因此覆盖了代码中指定样式的格式。
在这种情况下,必须删除字符样式才能从段落样式中查看格式。以编程方式,这可以完成 EITHER
- 通过将字符样式 "Default Paragraph Font" 应用于范围
或
- 通过使用 Selection 对象的 "clear formatting" 方法之一。选择哪个取决于所需的确切行为。可以清除所有格式,可以清除所有直接格式,也可以清除字符样式(与选项 1 的结果相同):
Selection.ClearCharacterStyle
。
我尝试为书签设置文本和预定义样式。文本很好,但未设置样式。这个来源有什么问题吗?:
Word.Application word = new Word.Application();
word.Visible = true;
Word.Document doc = word.Documents.Open("bookmark.dotx");
doc.Activate();
Word.Paragraph paragraph = doc.Bookmarks["navigatorHeadlineBookmark"].Range.Paragraphs.Add();
paragraph.Range.Text = "hello headline";
paragraph.Range.set_Style("navigatorHeadline");
//Debug
paragraph.Range.Select(); //selects the expected text (hello headline)
Word.Selection selection = word.Selection;
selection.set_Style("navigatorHeadline"); //style is not set :-(
总结最终得出答案的故障排除步骤: 1. 首先,确保书签在文档中并且包含正确的text/range。 2. 检查样式名称是否拼写正确,记住 Word 处理样式名称时区分大小写 3. 直接格式和字符样式将覆盖段落样式的格式。
这最后被证明是样式格式没有出现的原因:文本是用超链接样式格式化的。这是一种字符样式,因此覆盖了代码中指定样式的格式。
在这种情况下,必须删除字符样式才能从段落样式中查看格式。以编程方式,这可以完成 EITHER
- 通过将字符样式 "Default Paragraph Font" 应用于范围 或
- 通过使用 Selection 对象的 "clear formatting" 方法之一。选择哪个取决于所需的确切行为。可以清除所有格式,可以清除所有直接格式,也可以清除字符样式(与选项 1 的结果相同):
Selection.ClearCharacterStyle
。