python实践:多个excel文件内容合并成一个

python小白学了一点入门之后,觉得可以尝试着写这么一个小应用:工作中有时候会下发收集表格,后续需要汇总成一个,下面要解决的就是怎么样将多个excel文件的内容合并成一个的问题。

一 安装相关模块

这里用到的是openpyxl模块。安装方式是通过pycharm安装。也可以通过其他方式安装,这里不赘述。


安装openpyxl

二 写程序

  1. 新建两个测试excel文件:combat1.xlsx combat.xlsx。里面可以随意填写一些内容。
  2. 新建用于存放合并结果的excel文件:f_combat.xlsx
  3. 在1 2步相同文件夹下新建python文件:combat.py
    编写思路:
  • 打开各个excel文件,打开sheet页
  • 打开存放结果的excel文件,清空内容
  • 逐行读取各个excel文件的内容,写入结果文件。
    结果如下:
from openpyxl import Workbook,load_workbook

wb1=load_workbook("combat1.xlsx")   #打开各个excel文件,打开sheet页
wb2=load_workbook("combat2.xlsx")

sheet1=wb1["Sheet1"]
sheet2=wb2["Sheet1"]


wb=load_workbook("f_combat.xlsx")
del wb["Sheet1"]                        #打开存放结果的excel文件,清空内容
sheet=wb.create_sheet("Sheet1")
wb.save("f_combat.xlsx")


for row in sheet1:                        #读第一个Excel文件,把内容存放到一个列表里面
    null1 = []
    for cell in row:
        a=cell.value
        null1.append(a)
    sheet.append(null1)                  #sheet.append只能传入list等,所以转了一步list写入


for row in sheet2:
    null2 = []
    for cell in row:
        a=cell.value
        null2.append(a)
    sheet.append(null2)


wb.save("f_combat.xlsx")
wb.close()

三 优化程序

以上代码里面显然有不少重复的部分,优化思路是改成函数,支持多个excel。
参数格式是字典:{"excel名":"sheet名"}
结果如下:

def combat(filename):
    from openpyxl import Workbook,load_workbook

    #定义要写入的结果xlsx文件
    wb=load_workbook("f_combat.xlsx")
    del wb["Sheet1"]                        #打开存放结果的excel文件,清空内容
    sheet=wb.create_sheet("Sheet1")
    wb.save("f_combat.xlsx")

    for k in filename:
        wbx=load_workbook(k)
        sheetx=wbx[filename[k]]
        for row in sheetx:
            null1 = []
            for cell in row:
                a = cell.value
                null1.append(a)
            sheet.append(null1)  #sheet.append只能传入list等,所以转了一步list写入
        wb.save("f_combat.xlsx")

    wb.close()


# 合并 两个测试文件的写法:
combat({"combat1.xlsx":"Sheet1","combat2.xlsx":"Sheet1"})

四 测试结果

测试excel
执行后结果

测试成功。不过实际应用会有标题行重复的问题,在结果文件里面筛选一下删除就好,

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容