首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【批量办公技巧】一键对多个Excel文件进行差异对比(万能对比解决方案,支持同表和不同表对比)

【批量办公技巧】一键对多个Excel文件进行差异对比(万能对比解决方案,支持同表和不同表对比)

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

视频演示

前言

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

对比差异有两种情况:

1. 同表对比: 同一个excel文件内不同表格之前的对比。

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

同表对比

比如我有一个excel , 需要对比左表的 2月份销量(C列) 和右表的4月份销量(G列),匹配的列是产品列,如下图:

两张表都在同一个excel内, 也就是同表对比 。 由于现在每行的产品都是相同的,也就是同表的顺序对比。 如果顺序不一致,就是同表乱序对比,如下图:

不同表对比

与同表对比不同的是,两个表格再不同的excel里面, 也就是需要将每个excel都与一个模板表对比的情况。如下图:

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

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

解决方案

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

我们先进行同表内不同表格的对比, 需要根据产品名称来对比1月份销量和4月份销量。 有10个excel文件需要对比,随便打开一个如下图:

我们设置好界面的参数

Excel目录: 就是你待对比的10个excel的所在位置。

匹配列: 我设置了A和F , 映射到上图的案例图,也就是两个产品列。 对比时,也就是通过这个产品列名称来匹配数据的。

对比范围:设置了B:B(也就是B这一列,也可设置多列B:F) , 对比表的范围我设置了G:G , 也就是左表的B列(1月份销量)和右表的G列(4月份销量)对比。

输出设置: 设置高亮的颜色配置等,过滤无差异的,就是输出会把相同的数据删除。留下的全是不同的数据。

点击开始对比, 程序会一条一条处理对比, 执行完,打开结果文件,随便选取一个结果excel,如下图:

下面我们来设置下不同表的对比。 不同表对比需要有一个对比的模板文件:

也就是需要将10个excel与这个模板表对比, 通过产品名称匹配, 对比每个exel表的1月份销量和模板表的10月份销量。

程序界面参数如下:

设置好对比文件模板位置,还有匹配的名称列和范围就行了。

执行结果:

模板表是下面这样的, 是不是将不同的高亮了。

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

技术实现

非技术人员不需要观看!! 这里设计到的技术复杂, 我也就就简单讲解实现原理。

软件是基于Python开发的现代化办公自动化软件,主要使用了如下技术架构:

1. PySide6 (Qt6) - 现代化GUI界面框架:

2. springboot: excel的数据脱敏是通过后端java实现的。

3. 文件处理:os.walk() - 递归遍历目录结构。

4. http请求: requests框架。

部分代码解析

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

代码语言:javascript
复制
import os

from api.excel_api import ExcelAPI
from utils import FileUtils
from utils.logger import info, error, warning


class DifferService:
    """Excel差异对比服务类"""

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

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

        check_match_col = args['check_match_col']
        check_compare_cols = args['check_compare_cols']
        compare_file = args['compare_file']
        compare_match_col = args['compare_match_col']
        compare_compare_cols = args['compare_compare_cols']
        highlight_color = args['highlight_color']
        filter_no_diff = args['filter_no_diff']
        skip_header = args['skip_header']


        if not compare_file:
            compare_file = excel_file
        else:
            excel_file_name = FileUtils.get_filename_without_extension(excel_file)
            output_file_name = FileUtils.get_filename_without_extension(compare_file)
            if excel_file_name == output_file_name:
                return

        self.excel_api.differ_ab(excel_file,output_file,compare_file,{
            "rangeA":check_match_col,
            "differRangeA":check_compare_cols,
            "rangeB":compare_match_col,
            "differRangeB":compare_compare_cols,
            "highlightColor":highlight_color,
            "filterNoDifference":filter_no_diff,
            "includeHeaderRow":not skip_header
        })

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

结尾语

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

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

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

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

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

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