Python自动化:从Word表格提取数据并转换嵌入Excel
本文介绍如何利用Python自动化处理Word文档中的表格数据并嵌入Excel。通过python-docx读取Word表格,提取关键信息构建字典列表,再利用Pandas进行逆透视操作将一维数据转换为二维结构,最终导出为格式化的Excel文件。该方法适用于批量处理大量Word表格,解决手动复制粘贴效率低下的问题。
Word表格转Excel自动化处理方案
今日需求

核心任务是将Word文档中的表格数据迁移至Excel,并在过程中进行格式调整。这一场景在实际工作中十分常见,尤其是当涉及数据整理时。
若仅处理少量表格,直接复制粘贴即可;但若面对上百个表格,手动操作将极其耗时,此时自动化方案成为必要选择。鉴于本次遇到的源文件格式具有规律性,我们可以直接尝试编写脚本进行处理。
使用python-docx提取Word表格数据
# 首先要pip install python-docx
# 如果原文件是doc格式,那就先转成docx
from docx import Document
import pandas as pd
path = "./word表格转excel.docx"
docx = Document(path)
table_s = docx.tables # 返回一个Table对象的列表
len(table_s) --> 2 # 返回值是2,因为原文件中只有两个表格
list_ = [] # 初始化一个空列表,用来装后面的dict_
for table in table_s: # 循环所有的表格列表
dict_ = {}
dict_['名称'] = table.cell(0, 1).text # 表格的索引是从(0行,0列)开始
dict_['身份'] = table.cell(0, 3).text
dict_['简介'] = table.cell(1, 1).text
for i in range(3, len(table.rows)): # 后续的内容格式不固定,所以循环获取
dict_[table.cell(i, 0).text] = table.cell(i, 1).text
list_.append(dict_)
完成上述遍历操作后,变量list_将存储一个包含字典的列表,每个字典对应一个Word表格的数据。

随后,将该列表转换为Pandas DataFrame对象,以便进行更高效的数据操作和处理。
利用Pandas进行数据逆透视与格式化
df = pd.DataFrame(list_)
# 先将前三列作为索引,然后逆透视其他列,其实这就是个一维表转二维表的过程
df = df.set_index(['名称', '身份', '简介']).stack(level=0).to_frame()
# 重新设置一下行列索引的名字
df.index.names = ['名称', '身份', '简介', '物质']
df.columns = ['现状']
此时的DataFrame结构已与最终需求结果基本一致,仅需进行少量调整。

最后,将DataFrame导出为Excel文件,并进行适当的美化处理,即可完美满足需求。
导出Excel文件及注意事项
# 导出的时候一定要设置index=True不然只会保留一列Series
df.to_excel("data3.xlsx", index=True, merge_cells=True)
完整代码
# 首先要pip install python-docx
# 如果原文件是doc格式,那就先转成docx
from docx import Document
import pandas as pd
path = "./word表格转excel.docx"
docx = Document(path)
table_s = docx.tables # 返回一个Table对象的列表
list_ = [] # 初始化一个空列表,用来装后面的dict_
for table in table_s: # 循环所有的表格列表
dict_ = {}
dict_['名称'] = table.cell(0, 1).text # 表格的索引是从(0行,0列)开始的
dict_['身份'] = table.cell(0, 3).text
dict_['简介'] = table.cell(1, 1).text
for i in range(3, len(table.rows)): # 循环获得后面的内容
dict_[table.cell(i, 0).text] = table.cell(i, 1).text
list_.append(dict_)
df = pd.DataFrame(list_)
# 先将前三列作为索引,然后逆透视其他列,就是个一维表转二维表的过程
df = df.set_index(['名称', '身份', '简介']).stack(level=0).to_frame()
# 重新设置一下行列索引的名字
df.index.names = ['名称', '身份', '简介', '物质']
df.columns = ['现状']
# 导出的时候一定要设置index=True不然只会保留一列Series
df.to_excel("data3.xlsx", index=True, merge_cells=True)
到此这篇关于Python实现将Word表格嵌入到Excel中的文章就介绍到这了,更多相关Python Word表格嵌入Excel内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













