模仿某大佬的源码——【Python】批量合并Excel文件 - 知乎

excel自带的合并姿势是数据分析招聘群某dalao教的。

每天工作头一件事合并表格,自动以日期来重命名表格这件事,就交给python啦~

用差不多十年前的笔记本,合并6个表,每个表5000条数据,大概40S完成(大部分时间都耗在第二个for函数里面,也就是写入列表内,找了半天没找到优化办法(比如表内数据切片XX行到XX行这样))。

这里如果比较急的话推荐excel自带的。

数据-新建查询-从文件夹-编辑合并,去除操作时间的话,单纯合并数据的时间是我代码时间的1/8。

1.合并同一单元格内所有*.excel
2.先读取目录内所有文件
3.按照第一份表进行完全复制作为副本,其他表2~最尾行复制到副本内。

import os
import xlrd
import pandas as pd
import time
print(开始时间是——,time.strftime("%H:%M:%S"))

path = r"C:Users7Google 云端硬碟学习业务知识工作相关原始文件3.28"
fileListInThePath = os.listdir(path)
# 读取目录下文件列表

# 这里是数据存储列表
excelBiaoTou = xlrd.open_workbook(path + "//" + fileListInThePath[0]).sheets()[0].row_values(0)
# 这里是表头
name = xlrd.open_workbook(path + "//" + fileListInThePath[0]).sheets()[0].cell(1,10).value
# 打开表格,读取内表1,单元格2行12列内容
sheetName = name[0:10]
# 这里是表名

data = []
for i in range(len(fileListInThePath)):
readExcle = xlrd.open_workbook(path + "//" + fileListInThePath[i])
# 调用xlrd对目录下exlce文件进行遍历读取
excleData = readExcle.sheets()[0]
# 获取所有表对象
exclelNumOfHang = excleData.nrows
# 获取表格行数
for j in range(1,exclelNumOfHang):
data.append(excleData.row_values(j))
# 除去开头,逐行添加到存储列表内

newExcle = pd.DataFrame(data)
newExcle.columns = excelBiaoTou
newExcle.to_excel(path + \ + sheetName + .xlsx,header = True,index = False)

print(结束时间是——,time.strftime("%H:%M:%S"))

推荐阅读:

相关文章