2026-09-28 10:17:04 +08:00
2026-09-28 10:15:35 +08:00
2026-09-22 19:44:31 +08:00
2026-09-18 12:08:22 +08:00
2026-09-28 10:17:04 +08:00
2026-09-21 21:04:43 +08:00
2026-09-22 19:46:29 +08:00

Excel 关键字智能搜索工具

在指定目录中批量检索 Excel / Word / CSV / 文本文件中的关键字,提供图形界面与命令行多种交付形态。 同一需求用 Python、Go、Rust 三种技术栈各自独立实现,能力互补:

目录 技术栈 交付物 详细文档
python/ Python 3 + PyQt6 + pandas 桌面 GUI python/README.md
go/ Go + excelize 桌面版 + WebUI 版 + CLI 版 go/README.md
rust/ Rust + calamine + egui/eframe 原生桌面 GUI + CLI rust/README.md

三个版本均支持将搜索结果导出为 CSV(全部列双引号包裹 + UTF-8 BOM,Excel 双击打开不乱码)。


仓库结构

.
├── python/                        # Python 版(PyQt6 GUI,带内容预览)
├── go/                            # Go 版(desktop / webui / searcher 三入口,共享 internal/search 引擎)
├── rust/                          # Rust 版(CLI + 原生 egui 桌面版)
└── README.md                      # 本文件:三版本总览与选型对比

三版本能力对比

维度 Python 版 Go 版 Rust 版
交付形态 GUI 桌面版 + WebUI + CLI 桌面版 + CLI
界面实现 PyQt6 原生控件 本地 HTTP + Edge 应用窗口 / 浏览器 egui 原生窗口(无浏览器)
文件格式 .xlsx .xls .csv .txt .xlsx/.xlsm/.xltx/.xltm .docx/.docm .csv .txt Go 基础上额外 .xls .xlsb .ods
结果粒度 文件级(匹配数 + 命中预览) 单元格级(Sheet/位置/内容) 单元格级(Sheet/位置/内容)
内容预览面板 支持:表格渲染 无(悬停提示) 无(悬停提示)
界面语言 4 种(简/繁/EN/日) 4 种(简/繁/EN/日) 1 种(简体中文)
导出 CSV 5 列文件级 5 列命中级 5 列命中级(原生保存对话框)
搜索历史 QSettings .cache/search_history.json 与 Go 桌面版同文件互通
结果缓存 python/.index/(独立格式) .cache/(schema v2) 与 Go 同 schema 互通
匹配语义 Python 正则(IGNORECASE / \b) NFC + Unicode 折叠 + 单词边界 与 Go 逐字节对齐
取消/超时 手动停止 服务端超时取消600s(可手动取消) 桌面后台线程,无超时截断 (可手动取消)
运行环境 Python >= 3.8 + pip 依赖 免依赖 免依赖
单文件 exe 体积 约 300 MB(PyInstaller) CLI 6.02 MB / 桌面 9.38 MB / Web 9.49 MB CLI 1.23 MB / 桌面 9.14 MB
启动速度 慢(解释器 + 重依赖) 快 最快
交叉编译 依赖平台打包环境 GOOS/GOARCH 即可(无 CGO) rustup target + 目标 C 链接器

匹配语义说明:Python 版未做 NFC 规范化且 \b 不识别中日韩词边界,Go/Rust 两版逐字节对齐。 跨版本核对搜索结果时建议统一用默认的模糊匹配模式。


各版本优缺点与选型建议

Python 版:功能最全的「全能型」

  • 优点:三版本中唯一提供命中内容预览面板(Excel 表格化渲染 / 文本高亮),核对命中内容无需打开源文件
  • 优点:PyQt6 控件生态成熟,右键菜单、目录历史、双击打开文件等交互体验打磨最充分
  • 优点:迭代成本最低,改完即跑、无编译环节;作为最早的主力版本,功能最完整
  • 优点:xlsx 解析多级回退,自研高速 XML 解析(跳过 styles.xml 膨胀)再经 pandas/openpyxl 兜底, 坏文件与超大样式表兼容性最好
  • 缺点:分发重,PyInstaller 单文件 exe 约 300 MB;源码运行需要 Python 环境与 pip 依赖
  • 缺点:启动慢、内存占用高;受 GIL 限制,解析并发上限低于 Go/Rust
  • 缺点:无命令行版本(不便脚本化);不支持 Word(.docx)
  • 适合:需要边搜边核对内容的精查工作流、习惯 Python 生态的开发者。 详见 python/README.md。

Go 版:形态最全的「工程型」

  • 优点:三版本中唯一提供 WebUI 与 CLI,覆盖浏览器使用、服务器部署、脚本/批处理集成场景
  • 优点:三入口共享同一搜索引擎(internal/search),行为完全一致;goroutine 真并发 + context 全链路取消
  • 优点:单文件 6~10 MB 免依赖分发;无 CGO,交叉编译最容易(CI / Linux / macOS 友好)
  • 优点:支持 Word(.docx/.docm)段落级定位;前端四语言 i18n
  • 缺点:桌面版窗口依赖 Windows + Edge 应用模式,关窗靠 30 秒心跳判活退出
  • 缺点:搜索在服务端执行,长任务受请求超时截断(默认 600 秒)
  • 缺点:改前端样式需要 Node + Tailwind 工具链(CSS 产物已预编译提交,日常无需)
  • 适合:需要 WebUI / 命令行 / 跨平台发布,或要求小体积免依赖分发的场景。 详见 go/README.md。

Rust 版:性能与体验最优的「极致型」

  • 优点:体积最小、内存最低、启动最快(桌面 9.6 MB、CLI 1.3 MB)
  • 优点:桌面架构最优,原生窗口关窗即退、搜索跑后台线程(无服务端超时截断)、 万级结果虚拟滚动依然流畅
  • 优点:Excel 格式支持最全(calamine 额外支持 .xls / .xlsb / .ods)
  • 优点:匹配语义与 Go 逐字节对齐,缓存文件可与 Go 互通互换;导出用系统原生保存对话框
  • 缺点:界面仅简体中文(未做 i18n);无 WebUI 形态
  • 缺点:编译慢,release 开了 LTO + 单 codegen,全量构建 2~20 分钟
  • 缺点:Windows 构建需要 C 链接器(VS Build Tools 或自带 mingw; rust/build.bat 已支持探测 GNU 工具链免 VS 构建)
  • 适合:日常高频桌面检索、对启动速度与分发体积敏感的用户。 详见 rust/README.md。

快速上手(Windows)

:: Python 版(需 Python >= 3.8,首次运行自动安装依赖)
python\start.bat

:: Go 版(需 Go >= 1.22):编译三入口到 go\bin\
cd go && build.bat

:: Rust 版(需 Rust 工具链):编译 CLI + 桌面版到 rust\target\release\
cd rust && build.bat

预编译产物位置:

产物 位置
Go 三件套 go\bin\excel-search-desktop.exe / excel-search-webui.exe / excel-searcher.exe
Rust 两件套 rust\target\release\excel-search-rust.exe / excel-search-rust-desktop.exe
Python 单文件 exe python\dist\Excel关键字搜索工具.exe(历史构建,重打包方法见 python/README.md)

三版本共同的行为约定

  • CSV 导出格式(语义一致):UTF-8 带 BOM;CRLF 行尾;所有列一律双引号包裹, 字段内部双引号转义为两个双引号(RFC 4180),含逗号/换行/引号的字段不会裂列。
  • 导出列随各版本界面表格所见即所导: Python 为文件级 5 列(文件名/路径/大小/修改时间/匹配数); Go 与 Rust 为命中级 5 列(序号/文件路径/类型/Sheet 位置/匹配内容)。
  • 缓存互通:Go 与 Rust 的结果缓存同 schema(.cache/),搜索历史共用 .cache/search_history.json;Python 独立存放于 python/.index/。
  • 搜索选项语义对齐:区分大小写 / 完整单词 / 子目录递归 / 文件类型过滤 (各版本支持的格式集合略有差异,见上表)。

构建环境总览

版本 运行环境 构建需求 一键脚本 手工命令
Python Python >= 3.8 + requirements.txt 无需编译 python\start.bat python main.py
Go 无 Go >= 1.22 go\build.bat / make build go build ./cmd/...
Rust 无 Rust + C 链接器 rust\build.bat cargo build --release

每个版本的完整文件清单、构建步骤、测试与打包方法,详见各自目录下的 README。

截图预览

版本 检索中 检索完成
Python python_ing.png python_ok.png
Go go_ing.png go_ok.png
Rust rust_ing.png rust_ok.png
S
Description
Excel内容搜索工具
Readme
1.7 MiB
0 Stars 1 Watchers 0 Forks
V1.0.2-go
Latest
2026-09-28 18:12:15 +08:00
Languages
Go 30.1%
Python 29.7%
Rust 20.2%
CSS 9.4%
HTML 6.8%
Other 3.8%