如何使用win32 COM从Word Doc获取特定表?

时间:2017-06-13 17:59:15

标签: python ms-word win32com python-docx

我正在尝试浏览word文档并在许多表中找到一些特定的表。我知道如何使用docx库或win32遍历所有表,找到here。但是,我需要访问一些特定的表,而不是所有表。

这些表格标有Table A.x.x-x Insert table summary格式。它们是表格上方的文本标题,而不是表格本身。但是,当我使用win32中的doc.ListParagraphs时,这些不显示,因此我无法以这种方式成功遍历表。

我知道我需要访问的表的名称。整个文件中都有不相关的文字。在我需要找到的表格中没有任何一揽子相似之处,所以我不能只在某个单元格中查找特定值或类似的东西。

有没有人就如何处理此问题提出建议?最好使用win32 COM,但我对任何解决方案都持开放态度。

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的收藏品是doc.Paragraphs

doc.ListParagraphs仅返回具有列表格式的段落,例如项目符号或数字。

还有其他挑战,但这是我相信的第一个谜团:)

答案 1 :(得分: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

如果它出现在表格中,我们会转到例外情况,因为表格没有属性“text”。然后,如果count为true,即如果前一段包含表标题,则将标题和表本身存储在字典中。这会将标题与适当的表配对,我可以轻松访问我需要的表格。