首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【批量办公技巧】一键批量对多个Excel文件进行表合并(支持跨表合并)

【批量办公技巧】一键批量对多个Excel文件进行表合并(支持跨表合并)

原创
作者头像
家庭Q秋-3993387644
发布2025-11-21 10:30:19
发布2025-11-21 10:30:19
1740
举报
文章被收录于专栏:鲸闲办公鲸闲办公

视频演示

前言

大家好,我是老罗软件,最近公司有一批Excel文件,需要对每个excel进行表处理。单个excel的合并非常简单,但多个文件就相当耗费人力,今天老罗就是帮大家来解决这个问题的。

合并有两种情况:

1. 同表内部合并: 同一个excel文件内不同表格的合并。

2. 不同表的合并: 不同excel文件的表格进行对比。

同表内部合并

有一个excel, 内部有两个表,需要把右边表的4月,5月销量合并到左边表的1月销量的后面,根据产品名称来匹配。 如下图:

千万不能简单的复制粘贴, 因为产品排序是不一样的(左表第一个是黄桃,右表第一个是电饭锅)。

不同表的合并

意思就是左表和右表不在同一个excel里面,有两个excel, 如下图

单个excel的合并,我想正常人也应该会操作,但是有几百个这样的excel需要操作合并,大部分人都是打开wps,然后一个一个手动处理, 这样不加班才怪!

如果你想早点下班,抛开这些重复的繁琐步骤,节省更多时间充实自己,就请往下看。

解决方案

这是一个专业解决excel多文件处理的方案, 找到 Excel功能大全, 然后在弹出的框里点击 ”数据合并“

我们先进行同表内数据合并, 将右表的4,5月销量合并到坐标的C,D列位置(通过产品名称匹配)。 有10个excel都需要这样合并,随便打开一个如下图:

软件打开后, 我们设置好界面的参数

待合并表设置(左表的设置)

Excel目录: 就是你要操作的一批excel所在的位置。 查找列: 匹配条件列,也就是左边表的产品名称这一列。 起始位置:合并数据的填充起始位置, 也就是左边表的C1位置(标题那个位置)。

合并表设置(右表的设置)

合并文件: 为空,同表的不同table合并。 查找列: 右表的产品名称列。 合并范围: 选择 合并到左边表的数据范围。 G1代表G列的标题位置(第一个单元格)。 sheet范围: 一般不填 。 表示其它sheet的数据也会合并过来。 设置好之后,点击开始处理, 程序会一条一条处理, 执行完,打开结果文件,随便选取一个结果excel,如下图:

不同表的合并,参数设置都一样的意思, 只是需要将合并文件,改成独立的excel文件位置,也就是你要合并的独立的excel文件:

如果您有疑问可以一起来探讨,功能就介绍到 这里 ,希望能帮助大家,感谢!!!

技术实现

非技术人员不需要观看!! 这里设计到的技术复杂, 我也就就简单讲解实现原理。 软件是基于Python开发的现代化办公自动化软件,主要使用了如下技术架构: 1. PySide6 (Qt6) - 现代化GUI界面框架: 2. springboot: excel的数据脱敏是通过后端java实现的。 3. 文件处理:os.walk() - 递归遍历目录结构。 4. http请求: requests框架。 部分代码解析

项目的 开始 按钮,会开启一个QThread线程去处理,首先是获取excel目录, 然后通过os.walk遍历目录获取到所有文件,然后一个一个进行处理,处理的业务代码如下:

代码语言:javascript
复制
from api.excel_api import ExcelAPI


class MergeService:
    """Excel合并服务"""

    def __init__(self):
        self.excel_api = ExcelAPI()

    def merge_excel_files(self, excel_file, output_file, args):

        lookup_col = args['lookup_col']
        start_cell = args['start_cell']
        target_file = args['target_file']
        target_lookup_col = args['target_lookup_col']
        extract_range = args['extract_range']
        sheet_range = args['sheet_range']

        if not sheet_range:
            sheet_range = "0,1000"

        if not target_file:
            # 代表要合并当前表的其它sheet
            target_file = excel_file
            sheet_range = "1," + sheet_range.split(",")[1]

        startSheetIndex = 0
        endSheetIndex = 0
        try:
            startSheetIndex = int(sheet_range.split(",")[0])
            endSheetIndex = int(sheet_range.split(",")[1])
        except Exception as e:
            raise Exception("Sheet范围填写错误")

        self.excel_api.merge(excel_file, output_file, target_file, {
            "lookupColumnA": lookup_col,
            "lookupColumnB": target_lookup_col,
            "mergeStartRange": start_cell,
            "sourceRange": extract_range,
            "startSheetIndex": startSheetIndex,
            "endSheetIndex": endSheetIndex
        })

代码没有开源噢。如果您有技术合作意向,还请联系本人。今天就介绍到 这里 ,希望能帮助大家,感谢!!!

结尾语

单个文件的合并我们用wps这些有名的工具就可以了, 但是针对多文件批量一键处理还可以尝试我文章中的介绍方法,可以为你提高很大的工作效率,让你有时间充实自己,而不是像机器人一样做重复的工作,没有任何新的收获。 就说到这里了, 如帮助到你了,还请点个赞,感谢!!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 视频演示
  • 前言
    • 同表内部合并
    • 不同表的合并
  • 解决方案
  • 技术实现
  • 结尾语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档