python合并多个Excel

910 阅读1分钟

欢迎订阅公众号 数据分析那些事儿

使用openpyxl合并Excel

功能:

  • 读取某一个目录中的所有Excel文件
  • 遍历每一个Excel文件,读出要求的内容
  • 将读出的内容合并并保存
  • 将合并后的数据写入目的Excel

vscode of windows

import os
from openpyxl import Workbook
from openpyxl import load_workbook

'''常量'''
ROW_START = 2
ROW_END = 3
COL_START = 4
COL_END = 15
DEST_FILE_NAME = '汇总.xlsm'

'''获取所有待合并文件名称'''
filePath = r'C:\all'
nameList = os.listdir(filePath)
ss=[]
for i in range(len(nameList)):
    ss.append('all' + '\\' + nameList[i])

'''把每张表的数据放入数组mergeDat'''
mergeDat = [['']*(COL_END-COL_START+1) for _ in range(ROW_END-ROW_START+1)]
for i in range(len(nameList)):
    wbb = load_workbook(filename = ss[i])
    wss = wbb.get_sheet_by_name('明细')
    for row in range(ROW_START,ROW_END+1):
        for col in range(COL_START,COL_END+1):
           mergeDat[row-ROW_START][col-COL_START]+=wss.cell(row=row,column=col).value

'''读取目的表格'''
wb = load_workbook(DEST_FILE_NAME)
ws = wb["明细"]

'''写入目的表格'''
for row in range(ROW_START,ROW_END+1):
    for col in range(COL_START,COL_END+1):
        _ = ws.cell(column=col, row=row, value=mergeDat[row-ROW_START][col-COL_START])
        
wb.save(filename = DEST_FILE_NAME)