Python 将表格从Word提取到Excel-如何将表格分开?
正在尝试将.docx中的表(列数和行数大小不同)导出到Excel中 我可以让文档将表转换为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
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个表没有包含任何数据-只有索引行。有什么建议吗?您使用了哪套代码?多页方法-更新了原件以显示从单页中提取的错误您是否更改了任何内容?没有,只是相应地更改了文件名/路径名