首页 > 解决方案 > 用python在Excel中提取Word表格

问题描述

我有一个带有很多表格的 Word,我想将表格从 Word 提取到 Excel,但每个表格在不同的工作表中。在表格之间,我有很多段落,但我只想要表格。我在网上找到了一些东西,但它不起作用。

from docx.api import Document
import os. path
import pandas as pd

path=('SF.docx')
document=Document(path)
output_path=('Output')
writer=pd.ExcelWriter('{}/docx_tables.xlsx'.format(output_path),engine='xlsxwriter')
for i in range(len(document.tables)):
    table=document.tables[i]
    data=[]
    keys=None
    row_data=None
    for j,row in(table.rows):
        text=(cell.text for cell in row.cells)
        if j == 0:
            keys=tuple(text)
            continue
        row_data = dict(zip(keys,text))
        data.append(row_data)
    df=pd.DataFrame(data)
    df.to_excel(writer,sheet_name='N{}'.format(i))
writer.save()

在上面的代码中,'path' 是 docx 文件路径,'output_path' 是保存 excel 文件的文件夹的路径。

错误是这样的:

for j,row in(table.rows): TypeError: cannot unpack non-iterable _Row object

对于每张纸中的每张桌子,如果可能的话,我需要在它们的右边复制 2 次。

如果您有另一种方法可以将所有表格从 word 中提取到不同工作表中的 excel 中,请写出来。

谢谢

标签: pythonexcelpandas

解决方案


table.rows返回一个迭代器_Row,每次迭代都会产生一个对象。当你写

for j,row in(table.rows):

Python 期望有一个 2 元素序列,因此它可以将第一个元素分配给 ;j将第二个元素分配给row; 你可能想做

for j,row in enumerate(table.rows):

推荐阅读