汇总同一文件夹下多个excel

汇总同一文件夹下多个excel,第1张

```# -*- 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的文件 

1、首先打开多个EXCEL表格,点击进入汇总的表格。

2、然后在d出来的窗口中点击打开数据中的“合并计算”。

3、然后在d出来的窗口中点击打开浏览前面的按钮,框选出其中一个表格需要汇总的数据,回车确定。

4、然后在d出来的窗口中点击打开“添加”,继续选择另一个表格需要汇总的数据,重复这个步骤选择全部需要汇总的数据。

5、然后点击“确定”。

6、 然后就得到汇总结果了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12098996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存