吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7970|回复: 31
收起左侧

[Python 转载] Excel文件(.xlsx)合并 - 更新支持多Sheet合并 - python源码

  [复制链接]
小恶芯 发表于 2022-2-18 20:35
本帖最后由 小恶芯 于 2022-2-19 14:43 编辑

使用方式:将mergeExcel.py和想要进行合并的.xlsx文件放入同一文件夹中,双击运行mergeExcel.py即可
按照文件名的升序排序进行合并,合并后的文件名:Output.xlsx
20220219更新支持多xlsx多Sheet合并,按照对应Sheet名称进行合并

#支持多sheet合并,将不同xlsx文件中的同名sheet的内容进行合并

import os
from openpyxl import Workbook
from openpyxl import load_workbook

def getAllFiles():
    #返回当前目录下的Excel表格文件的名称(*.xlsx)
    path = os.getcwd()
    return [file for file in os.listdir(path)]

def isXlsx(file):
    #判断是否是.xlsx文件
    if os.path.splitext(file)[-1] == '.xlsx':
        return True
    else:
        return False

def sortXlsx(files):
    #按文件名对.xlsx文件进行升序排序
    files.sort(reverse=False)

def getAllXlsx():
    files = getAllFiles()
    xlsxList = []
    for file in files:
        if isXlsx(file):
            xlsxList.append(file)
        else:
            pass
    return xlsxList

targetXlsx = 'Output.xlsx'
xlsxList = getAllXlsx()
sortXlsx(xlsxList)
wb = Workbook()
for xlsx in xlsxList:
    wbtemp = load_workbook(xlsx)
    for currentSheet in wbtemp.sheetnames:
        wstemp = wbtemp[currentSheet]
        max_row = wstemp.max_row
        max_column = wstemp.max_column
        if currentSheet not in wb.sheetnames:
            #判断当前表的表名是否在targetXlsx中存在
            ws = wb.create_sheet(currentSheet, -1) #在targetXlsx所有表的后面创建一个新表
        else:
            ws = wb[currentSheet]
        if ws.max_row == 1 and ws.max_column == 1 and ws.cell(1, 1).value is None:
            #计算覆盖位置,空表则将row置0
            row = 0
        else:
            row = ws.max_row
        for i in range(1, max_row + 1):
            for j in range(1, max_column + 1):
                data = wstemp.cell(i, j).value
                ws.cell(row + i, j, data)
wb.save(targetXlsx)


示例图片:
合并前的工作簿1:

01

01

合并前的工作簿2的两张表:

02

02

03

03

合并后的工作簿中的两张表:

04

04

05

05


百度云链接:
链接:https://pan.baidu.com/s/1sZXj7Hb8VEXDkW2aHu7ApQ
提取码:52pj
--来自百度网盘超级会员V7的分享土豪下载链接: mergeExcel Sup-Sheets Update220219.zip (1.19 KB, 下载次数: 162)

免费评分

参与人数 5吾爱币 +11 热心值 +5 收起 理由
menoooooos + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
kaixianxian + 1 + 1 热心回复!
zr924 + 1 + 1 热心回复!
Roy430699 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Romeo_Ahmed 发表于 2022-2-18 22:12
本帖最后由 Romeo_Ahmed 于 2022-2-18 22:13 编辑

好家伙,我这还写了个合并csv文件的,也放上来吧

# coding = utf-8

"""
表格拼接程序 v1.9
by Romeo_Ahmed
"""

import os
import csv

print('欢迎使用表格拼接程序\n程序版本:1.9\n在使用前,您应将要拼接的表格转换为csv格式\n')
input('<按回车键开始>')

while True:
    folder_path = input('\n请输入您要拼接的表格所在文件夹的路径(例:C:\\工作\\):\n')
    result_path = input('\n请输入您想要生成的文件及路径(只支持csv格式,例:C:\\test.csv):\n')

    print('\n生成的csv文件内容为:')

    rows = []

    file_list = os.listdir(folder_path)
    for file in file_list:
        file_path = folder_path + file

        with open(file_path, 'r', encoding='utf-8') as f:
            file_reader = csv.DictReader(f)
            head = file_reader.fieldnames
            for row in file_reader:
                print(row)
                rows.append(row)

        with open(result_path, 'w', encoding='utf-8') as j:
            file_writer = csv.DictWriter(j, fieldnames=head)
            file_writer.writeheader()
            file_writer.writerows(rows)

    print('\n----------拼接成功----------')
    choice = input('\n是否退出(是/否):')
    if choice == '是':
        break
    else:
        input('\n<按回车键重新开始>\n')

input('\n<程序结束>')

写得很菜,权当一笑

没有注释,还请见谅

 楼主| 小恶芯 发表于 2022-2-18 22:52
sunxuewei888 发表于 2022-2-18 22:15
双击此文件打不开显示如何打开文件WIN10

这个是python代码,需要提前安装python3的运行环境,之后再在命令行输入pip install openpyxl安装之后,将需要合并的xlsx文件和mergeExcel.py放在同一路径,双击即可运行
qiubai2022 发表于 2022-2-18 20:44
lospring 发表于 2022-2-18 20:45
xls和xlsx可以合并吗?有没有相关的函数呢?或者可以用啥转换一下?谢谢
cyantea 发表于 2022-2-18 21:22
感谢分享
 楼主| 小恶芯 发表于 2022-2-18 21:22
lospring 发表于 2022-2-18 20:45
xls和xlsx可以合并吗?有没有相关的函数呢?或者可以用啥转换一下?谢谢

我用的这个openpyxl包不支持.xls文件的哦,可以将.xls文件另存为.xlsx文件,再用这个脚本进行合并就好了哦
sunxuewei888 发表于 2022-2-18 22:15
双击此文件打不开显示如何打开文件WIN10
Cacarot 发表于 2022-2-18 22:19
很实用,支持多sheet不?
 楼主| 小恶芯 发表于 2022-2-18 22:51
Cacarot 发表于 2022-2-18 22:19
很实用,支持多sheet不?

目前是不支持多sheet的嗷
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 00:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表