Python 将表格从Word提取到Excel-如何将表格分开?

Python 将表格从Word提取到Excel-如何将表格分开?,python,excel,pandas,xlsx,python-docx,Python,Excel,Pandas,Xlsx,Python Docx,正在尝试将.docx中的表(列数和行数大小不同)导出到Excel中 我可以让文档将表转换为excel,但它将两个表连接在一起。 有没有办法让表格在同一张纸上分开,或者在不同的工作表上分开(两者都可以) 代码如下: pip install python-docx import pandas as pd from docx import Document path = (r"PATH\Practice_Tables.docx") df = pd.DataFrame() do

正在尝试将.docx中的表(列数和行数大小不同)导出到Excel中

我可以让文档将表转换为excel,但它将两个表连接在一起。 有没有办法让表格在同一张纸上分开,或者在不同的工作表上分开(两者都可以)

代码如下:

pip install python-docx
import pandas as pd

from docx import Document
path = (r"PATH\Practice_Tables.docx")

df = pd.DataFrame()

doc = Document(path)
for table in doc.tables:
    for row in table.rows:
        row_text = [c.text for c in row.cells]
        df = df.append([row_text], ignore_index=True)
        
print(df)

                  0                     1               2
0    Table header 1        Table header 2  Table header 3
1              r1c1                  r1c2            r1c3
2              r2c1                  r2c2            r2c3
3  Practice Table 2  Practice table col 2             NaN
4             Row 2                Row 2a             NaN

writer = pd.ExcelWriter('PracticeTables3.xlsx', engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet1')

writer.save()
更新

单页错误:

NameError                                 Traceback (most recent call last)
<ipython-input-7-d2e9fa27f104> in <module>
      9     print(df)
     10 
---> 11     df.to_excel(writer, sheet_name='Sheet1', startrow=startrow)
     12     startrow += len(df)+2
     13 

NameError: name 'startrow' is not defined
namererror回溯(最近一次调用)
在里面
9打印(df)
10
--->11 df.to_excel(编写器,工作表名称='Sheet1',startrow=startrow)
12 startrow+=len(df)+2
13
NameError:未定义名称“startrow”

您的当前代码正在将所有表添加到一个数据帧中

您需要为每个表创建一个单独的数据框,将其写入Excel文件并继续

单张 这会将每个表写入Excel文件中的单独工作表中

将熊猫作为pd导入
从docx导入文档
路径='Practice_Tables.docx'
活页编号=0
writer=pd.ExcelWriter('PracticeTables3.xlsx',engine='xlsxwriter')
doc=文档(路径)
对于doc.tables中的表:
df=pd.DataFrame()
对于table.rows中的行:
row_text=[row.cells中c的c.text]
df=df.append([row\u text],ignore\u index=True)
打印(df)
活页编号+=1
df.to_excel(编写器,工作表名称=f'sheet{sheet\u no})
writer.save()
单张 此代码将表写入同一张工作表,中间有行

将熊猫作为pd导入
从docx导入文档
路径='Practice_Tables.docx'
startrow=0
writer=pd.ExcelWriter('PracticeTables3.xlsx',engine='xlsxwriter')
doc=文档(路径)
对于doc.tables中的表:
df=pd.DataFrame()
对于table.rows中的行:
row_text=[row.cells中c的c.text]
df=df.append([row\u text],ignore\u index=True)
打印(df)
df.to_excel(编写器,工作表名称='Sheet1',startrow=startrow)
startrow+=len(df)+2
writer.save()

谢谢-这对示例数据有效,但当我实际使用一个包含28个表的“真实”文档时,前两个表正确导出,第三个表有一半的行,其他25个表没有包含任何数据-只有索引行。有什么建议吗?您使用了哪套代码?多页方法-更新了原件以显示从单页中提取的错误您是否更改了任何内容?没有,只是相应地更改了文件名/路径名