一、前言
Python自动化文章后续,有比较的读者面临这个问题,有很多个Excel表格,他需要对这些Excel文件进行合并。
诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,就有点费事费力了。本文我们用Python来实现一下,轻松提升工作效率。
二、项目目标
用Python实现多Excel、多Sheet的合并处理。
三、项目准备
软件:PyCharm
需要的库:pandas, xlrd,os
四、项目分析
1)如何选择要合并的Excel文件?
利用os,获取所有要合并的Excel文件。
2)如何选择要合并的Sheet?
利用xlrd库进行Excel读取,获取要合并的Sheet名。
3)如何合并?
利用pandas库,对所有Sheet名逐一循环打开,通过concat()进行数据追加合并即可。
4)如何保存文件?
利用to_excel保存数据,得到最终合并后的目标文件。
五、项目实现
1、第一步导入需要的库
import pandas as pd
import xlrd
import os
2、第二步选择要合并的Excel文件
#要合并文件路径
path="D:/b/"
#获取文件夹下所有EXCEL名
xlsx_names = [x for x in os.listdir(path) if x.endswith(".xlsx")
3、第三步选择要合并的Sheet
获取第一个EXCEL名
xlsx_names1 = xlsx_names[0]
aa = path + xlsx_names1
#打开第一个EXCEL
first_file_fh=xlrd.open_workbook(aa)
# 获取SHEET名
first_file_sheet=first_file_fh.sheets()
4、第四步对Sheet内容进行循环合并
#按SHEET名循环
for sheet_name in sheet_names:
df = None
# 按EXCEL名循环
for xlsx_name in xlsx_names:
sheet_na = pd.ExcelFile(path + xlsx_name).sheet_names
if sheet_name in sheet_na:
#print(sheet_name)
_df = pd.read_excel(path + xlsx_name, sheet_name=sheet_name,header=None)
if df is None:
df = _df
else:
df = pd.concat([df, _df], ignore_index=True)
else:continue
5、第五步保存合并后的文件
df.to_excel(excel_writer=writer, sheet_name=sheet_name, encoding="utf-8", index=False)
print(sheet_name + " 保存成功!共%d个,第%d个。" % (len(sheet_names),num))
num += 1
writer.save()
writer.close()
六、效果展示
1、处理前Excel数据:
2、运行进度提示:
3、合并后的结果:
Original: https://blog.csdn.net/weixin_56187016/article/details/121717992
Author: 熬夜学习猿
Title: 用Python批量实现多Excel多Sheet合并,学会这4步就够了
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/693706/
转载文章受原作者版权保护。转载请注明原作者出处!