'''
此代码用于合并文件夹内的Excel表(07以的的Excel版本),前提是各个表的表头要一致
'''
import os
from openpyxl import load_workbook,Workbook
#多个Excel表格文件夹路径,自己设置
file_path = 'XXXXXXXXX/'
file_list = os.listdir(file_path)
headers = []
content_list = []
for file_name in file_list:
if '.xlsx' in file_name:
load_excel = load_workbook(file_path+file_name)
load_excel_active = load_excel.active
#获取读的第一个表的表头
if headers:
print('读取表格中《{}》....'.format(file_name))
else:
print('读取表格中《{}》....'.format(file_name))
for headers_value in load_excel_active[1]:
headers.append(headers_value.value)
new_excel = Workbook()
new_excel_active = new_excel.active
new_excel_active.append(headers)
#获取新表的内容
for rows in load_excel_active.iter_rows(min_row = 2,values_only = True):
content_list.append(rows)
new_filename = input('请输入合并表的名称:')
#保存文件的路径,自己设置
save_path = 'XXXXXXX'
#追加合并的各个表的内容
for content in content_list:
new_excel_active.append(content)
#如果表头存在序号或编号的字样,则重新编号
for col in new_excel_active.iter_cols(max_col = 1,values_only=True):
#print(col)
if col[0]=='序号' or col[0]=='编号':
newNum = 0
for new_colNum in new_excel_active.iter_cols(min_row=2,max_col = 1,values_only=True):
#print(new_colNum)
for i in range(len(new_colNum)):
newNum = i + 1
new_excel_active['A'+str(i+2)] = newNum
#保存新表格
new_excel.save(save_path+'{}.xlsx'.format(new_filename))
print('---------------------------------------------------------')
print('合并表格完成.......合并后文件名称为{},路径为{}{}.xlsx'.format(new_filename,save_path,new_filename))