如何读取和处理DOCX文件中表格的每个单元格的内容?
我在Windows 7和PyWin32上使用Python 3.2来访问MS-Word文档。
我是初学者,所以我不知道到达桌子的正确方法。到目前为止,我刚刚做到了这一点:
import win32com.client as win32
word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = False
doc = word.Documents.Open("MyDocument")
答案 0 :(得分:18)
以下是我在Python 2.7中的作用:
import win32com.client as win32
word = win32.Dispatch("Word.Application")
word.Visible = 0
word.Documents.Open("MyDocument")
doc = word.ActiveDocument
要查看您的文档有多少个表:
doc.Tables.Count
然后,您可以通过索引选择所需的表。请注意,与python不同,COM索引从1开始:
table = doc.Tables(1)
选择一个单元格:
table.Cell(Row = 1, Column= 1)
获取其内容:
table.Cell(Row =1, Column =1).Range.Text
希望这会有所帮助。
修改强>
根据标题返回Column index的函数示例:
def Column_index(header_text):
for i in range(1 , table.Columns.Count+1):
if table.Cell(Row = 1,Column = i).Range.Text == header_text:
return i
然后您可以通过这种方式访问您想要的单元格:
table.Cell(Row =1, Column = Column_index("The Column Header") ).Range.Text
答案 1 :(得分:18)
在生命中姗姗来迟,但我想我还是会把它拿出来: 现在(2015年),你可以使用漂亮的doc python库: https://python-docx.readthedocs.org/en/latest/。然后:
from docx import Document
wordDoc = Document('<path to docx file>')
for table in wordDoc.tables:
for row in table.rows:
for cell in row.cells:
print cell.text
答案 2 :(得分:7)
我在Reading Table Contents Using Python
的博客etienne上找到了一个简单的代码段关于这一点的好处是你不需要安装任何非标准的python库。
docx文件的格式在Open Office XML描述。
import zipfile
import xml.etree.ElementTree
WORD_NAMESPACE = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
PARA = WORD_NAMESPACE + 'p'
TEXT = WORD_NAMESPACE + 't'
TABLE = WORD_NAMESPACE + 'tbl'
ROW = WORD_NAMESPACE + 'tr'
CELL = WORD_NAMESPACE + 'tc'
with zipfile.ZipFile('<path to docx file>') as docx:
tree = xml.etree.ElementTree.XML(docx.read('word/document.xml'))
for table in tree.iter(TABLE):
for row in table.iter(ROW):
for cell in row.iter(CELL):
print ''.join(node.text for node in cell.iter(TEXT))