
大家好,我是老罗软件,最近公司有一批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遍历目录获取到所有文件,然后一个一个进行处理,处理的业务代码如下:
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 删除。