汇总同一文件夹下多个excel
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇总同一文件夹下多个excel相关的知识,希望对你有一定的参考价值。
参考技术A ```# -*- coding:utf-8 -*-import openpyxl
import xlrd
import os.path
import time
workbook1 = openpyxl.load_workbook('C:/Users/Administrator/Desktop/汇总.xlsx')#提前建一个汇总的表
name_list = workbook1.sheetnames #获取提前建一个汇总的表的sheet表名
sheet1 = workbook1[name_list[0]]#取第一个sheet表
sheet1.append(['姓名','工资','工资实发','年度'])#给汇总表添加标题,标题名按照提取表的字段来命名
path = 'C:/Users/Administrator/Desktop/汇总excel/'#需要汇总表的文件夹位置
file_list = os.listdir(path) # 获取这个文件夹下所有的excel文档。
for file in file_list:
if os.path.splitext(file)[1]=='.xlsx': #获取所有xlsx的文件
workbook = openpyxl.load_workbook(path+file) # 加载已经存在的excel
name_list = workbook.sheetnames #获取所有的sheet表名
sheet = workbook[name_list[0]]#取第一个sheet表
#print(sheet.dimensions) 获取所有表的范围 A1:O24
cell = sheet['A']
for i in cell:
if i.value == '序号':
a = i.row
print(a)
elif i.value == '合计':
b = i.row
print(b)
#此循环取需要获取的行数范围,其中的A列、序号和合计为起始位置定位
cell1 = sheet[sheet.dimensions]
for i in cell1:
for j in i:
if j.value == '姓名':
e = j.column
print(e)
elif j.value == '工资':
c = j.column
print(c)
elif j.value == '工资实发':
d = j.column
print(d)
# 此循环取需要获取的列数,其中的姓名、工资和工资实发为列位置定位
test_case=[]
for row in range(a+2,b):
sub_data=
sub_data['姓名']=sheet.cell(row,e).value
sub_data['工资']=sheet.cell(row,c).value
sub_data['工资实发']=sheet.cell(row,d).value
#print(list(sub_data.keys()))
ll=list(sub_data.values())
#print(ll)
test_case.append(ll)
print (file)
#print("读取到的所有测试用例:",test_case)
# 此循环为将需要获取的列字段对应的行数范围值取出来
max_row = sheet1.max_row #取汇总表的行数
print(max_row)
for row in test_case:
sheet1.append(row)
# 此循环为 将数据追加到汇总表中
hang = list(range(max_row+1,max_row+b-a-1))
for i in hang:
#print(hang)
sheet1.cell(row=i,column=4,value=file)#column=4 需要根据实际情况更改
# 此循环为 生成一列,将表名作为数据追加到列中
workbook1.save('C:/Users/Administrator/Desktop/汇总.xlsx')
附记
#定位含有某字符串的单元格
cell = sheet['A']
for i in cell:
if i.value == '序号':
a = i.row
print(a)
elif '填表' in str(i.value): #查找含有填表字符串的位置
b = i.row
print(b)
附记
#将非xlsx格式表转成xlsx
path = 'C:/Users/Administrator/Desktop/汇总excel/'#需要汇总表的文件夹位置
file_list = os.listdir(path) # 获取这个文件夹下所有的excel文档。
for file in file_list:
file_name,suff=os.path.splitext(file)
if suff =='xls':
data=pd.DataFrame(pd.read_excel(path+"/"+file))
data.to_excel(path+"/"+file_name+".xlsx",index=False)
if os.path.splitext(file)[1]=='.xlsx': #获取所有xlsx的文件
Power Query 同一文件夹多工作簿合并
参考技术A 上节课,我们讲了同一工作簿多表合并,大家练习后,也领略到Power Query的强大,操作方便,合并快捷,数据更新,一键刷新,着实魅力无限。本节课,我们继续学习同一文件夹多工作簿合并
本例中,我们《多工作簿合并文件夹》下有两个工作簿,一个《直辖市销售表》,另一个是《省会销售表》,每个工作簿下有三个城市的销售表,我们利用Power Query来快速实现一个文件夹下,两个工作簿,六个表的合并。
1. 打开菜单【数据】下的『新建查询』,如图1,选择〖从文件〗下的「从文件夹」。
2. 选择需要合并的文件夹,如图2,〘确定〙。
3. 稍等片刻,文件夹下工作簿就出现了,如图3,选择〘转换数据〙。
4. 〘转换数据〙后,数据就加载进来了,如图4,选择菜单【添加列】下的『自定义列』,在〖自定义列〗页面中,在「自定义列公式」中输入:“=Excel.Workbook([Content],true)”,〘确定〙,开始计算自定义列。
注意:
1) 字母大小写。
2) Excel.Workbook()中第一参数可以在后面「可用列」中选择。
3) Excel.Workbook()中第二个参数true,如果引用原表标题时,使用true参数,否则就不用写。
5. 点击计算结果〚自定义列〛后面解析符,如图5,勾掉〚使用原始列名作为前缀〛,〘确定〙,开始解析工作簿。
6. 稍作计算,如图6,工作簿就解析好了。
7. 点击解析结果〚Data〛列后面解析符,解析工作簿内的表,如图7,勾掉〚使用原始列名作为前缀〛,〘确定〙。
8. 计算时间长短因工作表的大小而定,如图8,中间填充颜色的区域就是我们需要的最终合并的表。选中,右键,删除其他列。就得到我们需要的表。
9. 最后修改结果表的各列数据类型,〘关闭并上载〙。
同一文件夹下多工作簿就合并好了。
今后无论是增加几个工作簿,或者是修改数据,只需要一键刷新,就完成了全部数据的合并。
学会了吗?
无论什么新技能,新知识,多练,多总结,多输出,一定可以的!
以上是关于汇总同一文件夹下多个excel的主要内容,如果未能解决你的问题,请参考以下文章
怎么在同一个文件夹下的多个EXCEL文件合并到一个EXCEL里?