背景介绍:最近工作需要将多个相同字段的的多个excel表格合并成一个文件,避免手动反复操作,决定利用python写个脚本😃
代码很简单,直接上代码了:
import xlrd,os
import xlsxwriter
import time
excel_files_path = str( input('请输入合并excel文件夹位置 >>>:')) #存放需要合并的excel的文件夹
title = int(input('请输入需保留题目行数 >>>:'))
end_line = int(input('保留最后__行之前所有数据 (需要保留结尾,填:0;保留最后1行之前的,填:1;)>>>:'))
for i in range(3):
print('开始合并... ... ...')
time.sleep(0.5)
excel_list = []
excel_files = os.listdir(excel_files_path)
for excel in excel_files:
if excel.endswith(".xlsx") or excel.endswith(".xls"):
excel_list.append(excel_files_path + excel)
# 读取数据
excel_data = []
# 添加题头所在行数
excel_data.append(xlrd.open_workbook(excel_list[0]).sheets()[0].row_values(title - 1))
for i in excel_list:
wb = xlrd.open_workbook(i)
for sheet in wb.sheets():
for rownum in range(title,sheet.nrows - end_line ):
excel_data.append(sheet.row_values(rownum))
# print(excel_data)
# 写入数据
target_xls = str(excel_files_path+'合并.xlsx')
workbook = xlsxwriter.Workbook(target_xls)
worksheet = workbook.add_worksheet()
for i in range(len(excel_data)): # 双重循环,分别向 行 和 列 写入数据
for j in range(len(excel_data[i])):
worksheet.write(i, j, excel_data[i][j])
print("合并excel成功!!")
print(" 文件保存在原文件位置 ^(* ̄(oo) ̄)^ ")
print("自动关闭倒计时,2s...")
time.sleep(1)
print("自动关闭倒计时,1s...")
time.sleep(1)
print("see u...")
time.sleep(1)
# 关闭文件流
workbook.close()
核心代码是中间一部分,之所以需要选择标题行和保留行数,是因为我的工作文件里面,每个excel的标题相同,结尾可能会存在汇总行,其实也是不需要合并的;
最后,用python将他们打包即可~
>>>python打包文件