1

我正在搜索 word 文档中的标题和自动编号,并将它们分配给元组。

(Heading Style, 1.1, text)

目前我正在使用 for 循环来传递文档中的每个 Paragraph 对象并搜索它。

   for x in xrange(1, doc.Paragraphs.Count+1):#for loop to print through paragraphs
    oText = doc.Paragraphs(x)
    if not oText.Range.Tables.Count >0 :
        results = re.match('(?P<number>(([1-3]*[A-D]*[0-9]*)(.[1-3]*[0-9])+))', oText.Range.Text)
        stylematch = re.match('Heading (?P<i>\d)', oText.Style.NameLocal)
        if results!= None and oText.Style != None and stylematch != None:
            doccat.append((oText.Style.NameLocal, oText.Range.Text[:len(results.group('number'))],oText.Range.Text[len(results.group('number')):]))
            style = oText.Style.NameLocal

有没有更有效的方法来搜索标题而不是调用和检查 Word 文档中的每个段落对象?

编辑:

我还应该提到我正在使用这个:

doc.ConvertNumbersToText()

将自动编号转换为段落文本中可搜索的内容。

第二次编辑:

我不是在寻找目录,尽管我希望能够作为一个选项。我只是在寻找标题 1、2、3、4、5、6 等。

4

1 回答 1

0

如果您在 Word 中录制宏,并使用 Goto (Ctrl-G),在对话框中选择 Headings,您将获得如下语句:

Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""

在 GoTo 对话框中,您还可以选择 Fields、AUTONUM,如果这是您所指的自动编号类型。

或者,使用高级查找记录宏,单击格式按钮和样式.. 以获得:

Selection.Find.Style = ActiveDocument.Styles("Heading 1")

这允许您指定特定的标题样式。

第三种选择是创建一个基于标题样式的目录- 获取其文本,然后Undo是目录。(我没有尝试过,但确信它会起作用。当然,这取决于你的具体意图。)

于 2013-06-28T22:32:21.623 回答