使用 Python 合并多个格式一致的 Excel 文件(推荐)
本文介绍如何利用Python的xlrd和xlsxwriter模块,自动化合并多个格式一致的Excel文件。通过读取指定行并过滤空白及特定关键字行,最终生成包含所有数据的新Excel文件,解决手动复制粘贴的低效问题。
一 问题描述
近期,一位朋友在工作中遇到一个数据处理难题:她每天需要处理一批结构相同的Excel表格。这些表格均只包含一个工作表(sheet),前两行分别为表格标题和表头,最后一行则是相关人员的签字栏。她的目标是将这批表格的内容整合到同一个Excel文件中,形成一张完整的表格。在咨询我之前,她每天花费大量时间进行手动复制和粘贴操作。表格的具体样式如下所示:

二 需求分析
根据描述,最终需求可以明确为:从这批表格中任选一个表格,提取其前两行作为新表格的标题和表头,并将这两行内容以嵌套列表的形式存入一个名为 data 的空列表中。接着,遍历每张表格的第3行至倒数第二行,剔除其中的空白行内容。将所有表格的有效内容以子列表的形式依次追加到 data 列表中。最后,将任取表格的最后一行(签字栏)以子列表形式插入 data 列表。完成数据收集后,将 data 列表的内容写入一个新的Excel文件中。
三 查阅资料
经过简短的资料查询,得出以下结论:
3.1 利用 xlrd 和 xlsxwriter 模块即可解决此需求;
3.2 选择 xlrd 和 xlsxwriter 的原因在于:xlrd 擅长读取Excel文件但不适合写入,而 xlsxwriter 适合进行大规模Excel表格的写入操作,且不会报错。
四 编码
以解决当前问题为导向,立即开始编码。 coding … …
# -*- coding:utf-8 -*-
import os, xlrd, xlsxwriter
source_dir = r'input'
new_execl = "All in one.xlsx"
raw_excels = os.listdir(source_dir)
keyword = "油站经理" # 除包括此关键字的行均插入
data = []
filename = os.path.join(source_dir, raw_excels[0])
wb = xlrd.open_workbook(filename)
sheet = wb.sheets()[0]
data.append(sheet.row_values(0))
data.append(sheet.row_values(1))
for excel in raw_excels:
filename = os.path.join(source_dir, excel)
wb = xlrd.open_workbook(filename)
sheet = wb.sheets()[0]
for row_num in range(2, sheet.nrows):
row_values = [str(i) for i in sheet.row_values(row_num)]
if len(''.join(row_values)) and (keyword not in ''.join(row_values)):
data.append(sheet.row_values(row_num))
data.append(sheet.row_values(sheet.nrows-1))
new_wb = xlsxwriter.Workbook(new_execl)
worksheet = new_wb.add_worksheet()
font = new_wb.add_format({"font_size":11})
for i in range(len(data)):
for j in range(len(data[i])):
worksheet.write(i, j, data[i][j], font)
new_wb.close()
半小时后,大功告成!
五 使用说明
5.1 下载安装 Python3.X(具体安装步骤请自行查阅相关资料);
5.2 安装 xlrd 和 xlsxwriter 模块,参考命令: pip install xlrd xlsxwriter。在执行此步骤前,可能需要先升级pip,具体升级命令系统会提示,直接复制粘贴即可;
5.3 新建一个名为 input 的文件夹,将需要合并的文件复制到此文件夹下;
5.4 将上述代码保存为 excels_merge.py 文件,并置于与 input 文件夹同级的目录中。双击鼠标稍等片刻即可运行。如果没有关联打开方式,可以在资源管理器的地址栏输入“cmd”,在打开的命令窗口中输入:python excels_merge.py。生成的 All in one.xlsx 即为合并后的新Excel文件。
六 总结
6.1 [str(i) for i in sheet.row_values(row_num)] 这段代码的作用是将列表内的元素统一转化为字符串,主要是为了下一行代码实现将列表转换为字符串做准备;
6.3 此脚本不对源Excel文件进行任何修改操作,可以放心使用;
6.4 以上脚本为初步实现,未进行优化。如果未来数据量过大,可能会考虑优化代码,欢迎大家多提意见或建议;
6.5 源代码可以访问我的同名CSDN博客及GitHub获取。
总结
以上所述是小编给大家介绍的使用Python合并多个格式一致的Excel文件的方法,希望对大家有所帮助。如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









