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

前言

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

合并有两种情况:

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

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

 

同表内部合并

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

image

 

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

 

不同表的合并

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

image

image

 

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

image

 

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

 

解决方案

关注公众号:”老罗软件“  , 可以获取到解决方案软件下载。 

 

视频演示

https://githubs.xyz/show/fish/excel_merge.mp4

 

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

image

 

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

image

 

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

image

 

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

Excel目录:  就是你要操作的一批excel所在的位置。

查找列: 匹配条件列,也就是左边表的产品名称这一列。

起始位置:合并数据的填充起始位置, 也就是左边表的C1位置(标题那个位置)。

 

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

合并文件: 为空,同表的不同table合并。

查找列: 右表的产品名称列。

合并范围: 选择 合并到左边表的数据范围。 G1代表G列的标题位置(第一个单元格)。

sheet范围: 一般不填 。 表示其它sheet的数据也会合并过来。

 

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

image

 

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

image

 

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

 

技术实现

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

 

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

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

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

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

4. http请求: requests框架。 

 

部分代码解析

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

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

 

 
posted @ 2025-11-21 09:29  qq3993387644  阅读(232)  评论(0)    收藏  举报