需求:
N个用户
每个用户一年的数据
Excel1
姓名 一月 二月
张三 30快 40快
Excel2
姓名 一月 二月
李四 30快 40快
合并为
姓名 一月 二月
张三 30快 40快
李四 30快 40快
代码段:
import os
import openpyxl
# 获取指定目录下的所有Excel文件
def dir_excel(dpath):
excel_names = []
for fname in os.listdir(dpath):
# 判断是否为 Excel文件
if fname.endswith('.xlsx') or fname.endswith('.xls'):
excel_names.append(fname)
return excel_names
# 拼接Excel
def concat_excel(excel_names, dpath):
# 新建Excel
new_wb = openpyxl.Workbook()
new_sheet = new_wb.active
new_sheet.title = '全部数据'
for i, excel_name in enumerate(excel_names):
excel_path = os.path.join(dpath, excel_name)
wb = openpyxl.load_workbook(excel_path)
sheet = wb.active
if i == 0: # 只取第一个Excel的表头
values = list(sheet.values)
else:
values = list(sheet.values)[1:]
# 添加到新的表格里
for value in values:
new_sheet.append(value)
# 保存
new_wb.save(os.path.join(dpath, '拼接后.xlsx'))
if __name__ == '__main__':
path = r'C:\Users\Asus\Desktop\新建文件夹 (2)'
excel_names = dir_excel(path)
concat_excel(excel_names, path)