利用openpyxl和os 把多个excel文件合并成一个sheet表

        本章介绍openpyxl和os的应用——把多个excel文件合并成一个sheet表。在我文件夹下方有4个需要合并的文件,每个文件的模板都是一样的(前提)。

        很简单,之需要在上一篇的基础上加点代码和进行一点修改,遍历每个文件即可。而遍历出每一个文件,看过我os篇的应该都知道,在同一文件夹下,只需要用os.listdir()即可。一步一步来,如果急的朋友可以直接滑到后面看全部的代码。

import openpyxl,os

os.chdir(r"D:\临时\python试验\openpyxl\多文件合并")      # 设置默认路径。只有设置了默认路径,下方才可以直接写文件f,否则要加上路径
for f in os.listdir():
    file = openpyxl.load_workbook(f)        # 读取每个文件
    sheets = file.worksheets      # 获取该文件的所有表

    for sheet in sheets:
        for row in sheet.iter_rows(2,sheet.max_row,1,sheet.max_column):
            row_list = [i.value for i in row]
            row_list = [f.split('.')[0]] + row_list        # 把xxx区加在最前面,以方便查看合并后是数据是哪个区
            print(row_list)

        成功遍历出所有文件所有表格的每一行,然后把这些行写入新文件即可。最终代码是:

import openpyxl,os

new_file = openpyxl.Workbook()        # 新建一个文件用于存放合并后的数据
st = new_file.create_sheet('合并后')
st.append(['班级','姓名','语文','数学','英语','综合科'])   # 把表头加上

os.chdir(r"D:\临时\python试验\openpyxl\多文件合并")      # 设置默认路径。只有设置了默认路径,下方才可以直接写文件f,否则要加上路径
for f in os.listdir():
    file = openpyxl.load_workbook(f)        # 读取每个文件
    sheets = file.worksheets      # 获取该文件的所有表

    for sheet in sheets:
        for row in sheet.iter_rows(2,sheet.max_row,1,sheet.max_column):
            row_list = [i.value for i in row]
            row_list = [f.split('.')[0]] + row_list        # 把xxx区加在最前面,以方便查看合并后是数据是哪个区
            st.append(row_list)        # 把行写入st表里

new_file.remove(new_file['Sheet'])          # 删除创建new_file文件时默认产生的Sheet表
new_file.save(r"D:\临时\python试验\openpyxl\多文件合并.xlsx")

        全部汇总完成。可以说openpyxl 的精髓在于迭代 iter_rows,该库对数据的操作基本都需要迭代出来,再重写。

        汇总表格的前提是模板都一样,然后根据表格的样式,选定需要汇总的区域进行迭代重写。如果模板不一样,全部行重新汇总到一个表里,能实现,但是又有什么意义,比如某列是姓名,但某个表格该列是学号,最终都汇总到同一列就没有意义了。

        本文excel文件:链接:https://pan.baidu.com/s/1UH5fpdTVNggGj-8pa5cGsQ?pwd=pold 
提取码:pold

猜你喜欢

转载自blog.csdn.net/m0_71559726/article/details/130370651