从一次痛苦的批量录入说起

MultiClipboard 开源分享

Posted by 翡翠小屋 on August 17, 2026

做开发或者日常办公,总逃不开「批量录入」这种活:Excel 里一列几十上百条数据,要一条一条填进网页表单、后台系统或者登记页面。最原始的操作是「复制一格 → 切窗口 → 粘贴 → 再切回来」,循环往复。数据一多,枯燥不说,还容易错行、漏填,甚至粘到错误的输入框里。

我当时就想:能不能有一个工具,让我「复制一次」,剩下的分发动作足够简单?于是有了 MultiClipboard(多元剪贴板)——一个基于 C++20 与 Qt6 的剪贴板内容切分与拖拽分发工具。

它怎么工作

用法只有三步:

  1. 在 Excel、文本编辑器里复制多行(或多列)数据
  2. 工具自动捕获剪贴板内容,按换行、制表符或 Excel 表格格式切分成独立条目;
  3. 从工具窗口把条目逐个拖拽到目标输入框,松手即完成粘贴;双击条目也可以直接复制到剪贴板。

也就是说,以前「复制一百次」,现在变成「复制一次、拖拽一百次」,省掉了反复切换窗口的麻烦。

典型使用场景

  • Excel 表格数据填入网页表单:选中一列或多列复制,条目自动切分后逐个拖拽填入;
  • 批量单据录入:把编号、姓名、金额等数据依次录入业务系统或后台管理系统;
  • 信息登记与问卷填写:将名单、联系方式等逐条粘贴到登记页面;
  • 重复性文本输入:把代码片段、模板语句等逐条填入编辑器或表单。

功能特性

智能内容切分

自动识别换行、制表符和 Excel 表格格式,支持 smart、single_column、single_row 多种切分模式。

拖拽粘贴

采用双路径:优先走 QDrag,失败时自动回退为「写剪贴板 + 模拟 Ctrl+V」,保证在大多数目标控件上都能生效。

实时搜索过滤

输入关键词即过滤,匹配项高亮。

其他实用功能

  • 明暗主题一键切换
  • 全局快捷键(Ctrl+Shift+M 呼出/隐藏窗口等,全部可在配置中自定义)
  • 系统托盘常驻
  • 持久化条目(勾选固定常用条目,不被新内容覆盖)
  • 纯文本粘贴(一键去除格式)
  • 单实例运行
  • 完整的文件轮转日志与崩溃报告

技术实现

项目按三层解耦设计:

  • core 核心业务层:负责内容解析、剪贴板监控和拖拽管理,完全不依赖 UI;
  • platform 平台抽象层:用纯虚基类加工厂实现,Windows 走 RegisterHotKey / SendInput,Linux 保留 X11/XTest 适配;
  • ui 界面层:只负责交互,通过 Qt 信号槽与核心层通信。

几个值得一提的实现细节:

  • 剪贴板监控用 QTimer 轮询加 300ms 防抖,并对文件、图片内容做了过滤;
  • 内容解析器支持智能、单列、单行、Excel 四种模式,还做了去空白、去空行、去重和长度限制;
  • 构建使用 xmake,Qt 6 通过 vcpkg 安装;
  • 打包脚本基于 PE 导入表解析精确收集运行时依赖,产物统一输出到 dist/ 目录,拷贝到目标机器即可直接运行(Windows 10+ 无需额外安装运行库);
  • 单元测试使用 Qt Test 框架,覆盖内容解析器的全部用例。

开源

项目以 MIT 协议开源,托管在 GitHub:jadedrip/multi-clipboard。目前主支持 Windows 10/11,Linux(X11)适配代码也已保留。如果你也受「批量填表」折磨,欢迎拿去用,也欢迎提 Issue 和 PR。