2017-06-13 168 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只返回具有列表格式的段落,如项目符号或数字。

有其他的挑战,但是这是解决我认为:)

相关问题