2017-06-13 165 views
0

我正在嘗試瀏覽一個word文檔,並在很多表格中找到一些特定的表格。我知道如何遍歷所有使用docx庫或win32的表,發現here。但是,我需要訪問一些特定的表格,而不是全部。如何使用win32 COM從Word Doc獲取特定表格?

這些表格有標題,格式爲Table A.x.x-x Insert table summary。它們是表格上方的文本標題,而不是表格本身。但是,當我使用win32中的doc.ListParagraphs時,這些不會顯示出來,所以我無法以這種方式成功地遍歷表。

我知道我需要訪問的表的名稱。整個文件中都有不相關的文字。在我需要查找的表格中沒有任何一致的相似性,所以我不能只在特定的單元格或類似的東西中尋找特定的值。

有沒有人有如何解決這個問題的建議?最好使用win32 COM,但我願意接受任何解決方案。

+0

標題是實際表格的一部分還是與表格分開的「標題」段落? – scanny

+0

他們標題中與表格分開的段落,正上方 –

回答

0

我想出了一個答案,使用this討論的第一個謎。感謝您澄清使用哪個win32 COM函數!

從討論中,我使用iter_block_items的代碼。我還列出了我想要的標題的所有表格標題,名爲listOfTables。然後我用下面的代碼輸出一個字典,這些鍵是表格的標題,值是表格本身。

dox = docx.Document(path) count = False tables = {} for item in iter_block_items(dox): try: title = item.text if title in listOfTables: count = True except: if count == True: tables[str(title)] = item count = False print tables

如果臨到一個表,我們去除了情況,因爲表中有沒有屬性「文本」。然後,如果計數爲真,又如果前一段落包含表格標題,則將標題和表格本身存儲在字典中。這將使標題與適當的表格配對,並且我可以輕鬆訪問我需要的表格。

0

我認爲你正在尋找的集合是doc.Paragraphs

doc.ListParagraphs只返回具有列表格式的段落,如項目符號或數字。

有其他的挑戰,但是這是解決我認爲:)

相關問題