使用python提取word文件表,然后导出到excel
我想提取包含在多个工作表中的表格的word文件,然后导出到excel 下面是我的代码使用python提取word文件表,然后导出到excel,python,Python,我想提取包含在多个工作表中的表格的word文件,然后导出到excel 下面是我的代码 import pandas as pd from docx.api import Document document = Document('word.docx') for table in document.tables: for row in table.rows: data = [] keys = N
import pandas as pd
from docx.api import Document
document = Document('word.docx')
for table in document.tables:
for row in table.rows:
data = []
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if i == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
print(data)
df = pd.DataFrame(data=data)
# print (df)
df.to_excel('dict1.xlsx')
导出时出现问题,我只获取最后一张图纸数据,而不是excel中的完整数据。有谁能帮助我,我犯了什么错误吗?尝试使用xlsxwriter引擎创建一个书写器,然后将df添加到书写器的新图纸,并在最后保存,而不是覆盖同一个excel文件。看看这是否有效:
import pandas as pd
import xlsxwriter
writer = pd.ExcelWriter('dict1.xlsx', engine='xlsxwriter')
from docx.api import Document
document = Document('word.docx')
sheet_number=1
for table in document.tables:
for row in table.rows:
data = []
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if i == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
print(data)
df = pd.DataFrame(data=data)
df.to_excel(writer, sheet_name='sheet{}'.format(sheet_number))
sheet_number+=1
writer.save()
[编辑]
要创建一张包含所有表的图纸,请在为创建数据之前创建数据:
data = []
for table in document.tables:
for row in table.rows:
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if i == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
print(data)
df = pd.DataFrame(data=data)
df.to_excel(writer, sheet_name='sheet{}'.format(sheet_number))
我认为,您正在用每个循环覆盖df数据
import pandas as pd
from docx.api import Document
document = Document('word.docx')
for table in document.tables:
for row in table.rows:
data = []
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
if i == 0:
keys = tuple(text)
continue
row_data = dict(zip(keys, text))
data.append(row_data)
print(data)
df = pd.DataFrame(data=data)
#Append or combine your df elements here, it is overwriting each time you move to a new table
result=df.append(df)
result.to_excel('dict1.xlsx')
为什么在标题中大喊大叫?修改了它。你能帮我回答我的问题吗?你能确定问题是否出在如何从Word中读取数据上吗?如果这是一个问题,结束的事情,我们需要一个样本文件,复制它。如果不是,那么将代码简化到不需要Word文档(除了您之外没有人需要)就可以重现问题并测试修复的地方会很有帮助;例如只需为
文档
硬编码一个Python数据结构,该数据结构具有相同的表
和行
对象/结构。你能给我提供word文档示例吗?我已经添加了图像。word文档包含类似的表,直到第10页。你能帮我查找并帮助我吗?但我面临的问题是它只导出word文件的最后一张表。它留下的其余表。而且我不希望在不同的表中输出…在一张表中完整的数据啊,好的,所以你必须在第一张for之前创建数据,df在forI编辑我的答案之前添加一个新的解决方案。请检查它是否解决了您的问题。它没有创建excel文件。请检查导出功能为什么不工作。对不起,您不需要wirter,您只能使用df.to_excel('dict1.xlsx'),或者您可以通过添加writer.save()像现在一样使用它在最后创建文件谢谢,但我得到缩进错误…你能帮我检查你的间距,这就是错误试图告诉你的。