200字
Python 开发通用 Excel/CSV 匹配神器
2025-11-27
2025-11-27

image-fygt.png

image-uPCS.png

告别 VLOOKUP 卡顿!Python 开发通用 Excel/CSV 匹配神器

在日常办公数据处理中,我们经常面临这样的场景:需要从一个巨大的总表(Master Data)中,根据某些字段(如订单号、身份证号)查找对应的信息并填充到另一张表中。

通常我们会使用 Excel 的 VLOOKUPXLOOKUP 公式。但在面对几十万行数据,或者需要跨多个文件批量匹配时,Excel 往往会变得卡顿甚至崩溃。此外,当匹配条件复杂(例如需要组合“姓名+手机号”作为唯一键)时,公式的编写也容易出错。

今天为大家介绍一套基于 Python + PyQt5 开发的通用 Excel/CSV 匹配工具。它将匹配过程拆分为“建库”和“匹配”两个步骤,利用 Hash Map (字典) 实现极速匹配,彻底解决大文件处理难题。


核心设计思路

本工具套件包含两个独立应用,采用了“以空间换时间”的策略:

  1. 数据源转换器 (excel&csv_2_json.py)
    负责读取原始数据源(Excel/CSV),用户可以灵活定义唯一键(Key)取值列(Value)。程序将这些数据清洗并转换为结构化的 JSON 文件(即 Python 字典格式)。

    • 技术优势:JSON 字典的查找时间复杂度为 O(1),远快于 Excel 的线性查找。
  2. 数据匹配器 (march.py)
    负责读取待匹配的文件,根据用户指定的列生成查找键,在 JSON 字典中瞬间找到对应值,并追加到表格末尾。

    • 技术优势:支持批量处理文件夹下的所有文件,一次性完成所有匹配工作。

Github源代码:csv文件通用匹配工具
Github源代码:csv文件通用匹配工具
Github源代码:csv文件通用匹配工具


工具亮点

1. 极速读取,告别等待

底层使用了基于 Rust 开发的 python-calamine 库来读取 Excel 文件。相比传统的 openpyxlpandas,它在读取大型 .xlsx 文件时速度有着数量级的提升,且内存占用更低。

2. 灵活的“组合键”支持

很多时候单列数据不足以唯一标识一条记录。

  • 传统做法:在 Excel 中插入辅助列,用 A2&B2 拼接字符串。
  • 本工具做法:在界面上直接勾选多个列(如“部门”和“姓名”),程序自动在后台拼接成 部门|姓名 的唯一键。匹配时只需在另一个文件中勾选对应含义的列即可。

3. 智能的“停止词”截断

处理财务报表或系统导出数据时,往往文件底部会有“合计”、“制表人”等非数据行。
工具内置“停止词”功能(默认为“合 计”)。读取数据时,一旦某行包含该词,程序会自动停止读取后续内容,确保生成的字典纯净无脏数据。


使用教程

第一阶段:制作数据字典

启动 excel&csv_2_json.py

  1. 导入数据:选择你的总表 Excel 或包含多个分表的文件夹。
  2. 设定表头:如果第一行不是标题,可以调整“表头行号”并刷新。
  3. 定义规则
    • 左侧列表:勾选作为 Key 的列(如 SKU编码)。
    • 右侧列表:勾选需要提取的数据列(如 商品名称单价)。
  4. 生成:点击转换,你将得到一个 data_march.json 文件。

第二阶段:批量匹配

启动 march.py

  1. 准备工作:选择你需要填充数据的 Excel 文件(支持批量目录)。
  2. 加载字典:导入上一步生成的 JSON 文件。
  3. 关联映射
    • 在“Excel 键列”中勾选对应的列(如 SKU编码,顺序需与第一阶段一致)。
    • 在“JSON 目标列”中勾选你想把哪些数据填入表中。
  4. 输出结果:点击开始匹配,工具会生成新的文件,将匹配到的数据自动追加在右侧。

为什么选择 Python 自研工具?

对于开发者而言,这个项目展示了 PyQt5 构建桌面应用的典型范式:

  • 界面与逻辑分离:通过信号与槽机制处理交互。
  • 配置化思维:不把列名写死在代码里,而是让用户动态从文件中读取并选择。
  • 异常处理:针对 CSV 的编码问题(UTF-8-SIG vs GBK)做了自动探测兼容。

对于非技术用户,这是一个开箱即用的高效工具,无需安装庞大的数据分析环境,无需编写复杂的 Python 脚本,即可享受编程带来的效率红利。

获取与运行

项目开源代码已发布,你需要安装以下依赖即可运行:

pip install PyQt5 python-calamine openpyxl

快来尝试一下,把原本需要一下午的 VLOOKUP 工作缩短到几分钟吧!

image-giWK.png

Python 开发通用 Excel/CSV 匹配神器
作者
一晌小贪欢
发表于
2025-11-27
License
CC BY-NC-SA 4.0

评论