汇总同一文件夹下多个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文件合并到一个文件中?

Power Query 同一文件夹多工作簿合并

怎么在同一个文件夹下的多个EXCEL文件合并到一个EXCEL里?

把一个文件夹下的多个excel文件合并到同一个excel的一个sheet里

如何把多个EXCEL文件汇总到一个EXCEL中?

欢迎使用excel汇总软件