我正在尝试浏览word文档并在许多表中找到一些特定的表。我知道如何使用docx库或win32遍历所有表,找到here。但是,我需要访问一些特定的表,而不是所有表。
这些表格标有Table A.x.x-x Insert table summary
格式。它们是表格上方的文本标题,而不是表格本身。但是,当我使用win32中的doc.ListParagraphs
时,这些不显示,因此我无法以这种方式成功遍历表。
我知道我需要访问的表的名称。整个文件中都有不相关的文字。在我需要找到的表格中没有任何一揽子相似之处,所以我不能只在某个单元格中查找特定值或类似的东西。
有没有人就如何处理此问题提出建议?最好使用win32 COM,但我对任何解决方案都持开放态度。
答案 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,即如果前一段包含表标题,则将标题和表本身存储在字典中。这会将标题与适当的表配对,我可以轻松访问我需要的表格。