C# 如何在 Word Interop 中获取标题的自动编号
C# How to get automated number of heading in Word Interop
我有循环遍历所有段落并找到特定字符串的代码(如下所示)。当我找到该字符串时,我打印出它所属的 header 的自动编号。问题是,我也想要 header 号码,但不知道如何获得它。代码在这里:
编辑:使用有效内容清理代码
string LastHeader = "";
foreach (Paragraph paragraph in aDoc.Paragraphs)
{
Microsoft.Office.Interop.Word.Style thisStyle =
(paragraph.Range.get_Style() as Microsoft.Office.Interop.Word.Style);
if (thisStyle != null && thisStyle.NameLocal.StartsWith("Heading 2"))
{
LastHeader = paragraph.Range.ListFormat.ListString + " " +
paragraph.Range.Text.Replace("\"", "\"\"").Replace("\r", "");
}
else
{
string content = paragraph.Range.Text;
for (int i = 0; i < textToSearch.Count; i++)
{
if (content.Contains(textToSearch[i]))
{
// Do stuff here
}
}
}
}
每次我 re-read 你的信息我都觉得我没有完全理解你的问题,所以下面可能包含比你正在寻找的更多的信息...
获取特定段落的编号:
paragraph.Range.ListFormat.ListString
Word 有一些 built-in 书签可以为您提供需要大量工作才能确定的信息。其中之一是 \HeadingLevel。这将获取在 SELECTION 之前使用 Heading 样式格式化的第一段。这是棘手的部分,因为我们真的不想做出选择……但它可以追溯到代码模仿用户操作的旧 WordBasic 时代,所以我们一直坚持下去。
textToAnalyse.Select
aDoc.Bookmarks("\HeadingLevel").Range.ListFormat.ListString
书签调用本身不会更改选择。
我看到的另一个选项是,因为您已经在循环 Paragraphs 集合,所以将检查 paragraph.Range.Style 并且如果它以字符串 "Heading" 开头(假设没有使用其他方式)在这些文档的样式中)保存 ListFormat.ListString
以便在满足条件时调用它。
不过,我确实想知道,为什么您要 "walking" 段落集合而不使用 Word 的 built-in 查找功能,因为那样会快得多。它可以搜索文本和(样式)格式。
我有循环遍历所有段落并找到特定字符串的代码(如下所示)。当我找到该字符串时,我打印出它所属的 header 的自动编号。问题是,我也想要 header 号码,但不知道如何获得它。代码在这里:
编辑:使用有效内容清理代码
string LastHeader = "";
foreach (Paragraph paragraph in aDoc.Paragraphs)
{
Microsoft.Office.Interop.Word.Style thisStyle =
(paragraph.Range.get_Style() as Microsoft.Office.Interop.Word.Style);
if (thisStyle != null && thisStyle.NameLocal.StartsWith("Heading 2"))
{
LastHeader = paragraph.Range.ListFormat.ListString + " " +
paragraph.Range.Text.Replace("\"", "\"\"").Replace("\r", "");
}
else
{
string content = paragraph.Range.Text;
for (int i = 0; i < textToSearch.Count; i++)
{
if (content.Contains(textToSearch[i]))
{
// Do stuff here
}
}
}
}
每次我 re-read 你的信息我都觉得我没有完全理解你的问题,所以下面可能包含比你正在寻找的更多的信息...
获取特定段落的编号:
paragraph.Range.ListFormat.ListString
Word 有一些 built-in 书签可以为您提供需要大量工作才能确定的信息。其中之一是 \HeadingLevel。这将获取在 SELECTION 之前使用 Heading 样式格式化的第一段。这是棘手的部分,因为我们真的不想做出选择……但它可以追溯到代码模仿用户操作的旧 WordBasic 时代,所以我们一直坚持下去。
textToAnalyse.Select
aDoc.Bookmarks("\HeadingLevel").Range.ListFormat.ListString
书签调用本身不会更改选择。
我看到的另一个选项是,因为您已经在循环 Paragraphs 集合,所以将检查 paragraph.Range.Style 并且如果它以字符串 "Heading" 开头(假设没有使用其他方式)在这些文档的样式中)保存 ListFormat.ListString
以便在满足条件时调用它。
不过,我确实想知道,为什么您要 "walking" 段落集合而不使用 Word 的 built-in 查找功能,因为那样会快得多。它可以搜索文本和(样式)格式。