2013-06-28 81 views
1

我正在通過word文檔搜索標題和自動編號並將它們分配給元組。在MS Word中搜索標題

(Heading Style, 1.1, text) 

當前我正在使用for循環來傳遞文檔中的每個段落對象並搜索它。

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 ...等等。

+0

它比這更糟,因爲你還應該尋找基於標題樣式的樣式。另外,你關心大綱級別嗎? – JasonPlutext

回答

0

如果您在Word中錄製宏,然後在對話框中使用goto(按Ctrl-G),選擇標題,你會得到像聲明:

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

在轉到對話框,您也可以選擇字段,AUTONUM,如果這是您所指的自動編號的類型。

另外,記錄使用高級查找宏,單擊格式按鈕和風格。如要索取:

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

這允許你指定特定的標題樣式。

第三個選項是創建一個目錄 - 這是基於標題樣式 - 抓住它的文本,然後Undo TOC。 (我沒有嘗試過,但是確定它會起作用,當然這取決於你的具體意圖。)

+0

我打算以後在Access中輸入這些數據,所以我只是將文檔解析爲塊。 –

+0

Hello @ Doof12。 TOC只是一個建議,如果您需要從標題中獲取文本,然後刪除TOC。但是,如果你想將文檔解析爲塊,那麼我會查看「大綱視圖」(從視圖選項卡)。在這裏,您可以摺疊不同標題級別的內容,複製並粘貼它們,僅顯示特定標題等。 –