汇总同一文件夹下多个excel


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的文件 
image
image
image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 京❤️达总店 杨顺永 2021年6月15日 落地真经严格就是爱,放纵既是害 6月总产值16万5 6月台词目标100...
    忠于我阅读 249评论 0 0
  • 本来昨晚7点左右的时候安排了一个电话面试,没成想到八点的时候,电话还没有打过来。而因为手头的事情已经完成了,所以我...
    GuangHui阅读 324评论 0 2
  • ❤️❤️超级爱自己❤️❤️ ❤️我是最棒的自己 我是漂亮的 我是富足的 我是丰盛的 我是圆满的 我是喜悦的 我是自...
    张薇阅读 166评论 1 1
  • 6月15日能量双感恩复盘日记 感恩之道——感恩就是奇迹的灵魂伴侣。(春燕) 感恩之心——念恩️✨ 1.我发自内心感...
    4点早起者阅读 132评论 0 1
  • 今天青石的票圈出镜率最高的,莫过于张艺谋的新片终于定档了。 一张满溢着水墨风的海报一次次的出现在票圈里,也就是老谋...
    青石电影阅读 10,375评论 1 2