2.1 KiB
2.1 KiB
wordtable2sqlite
把 .docx 里的 Word 表格内容导入 SQLite 的最小 Go 工具。
详细操作说明见:HOWTO.md
特点
- 不依赖 Word、WPS、Python 或 LibreOffice。
- 直接解析
.docx内部的word/document.xml。 - SQLite 使用纯 Go 驱动
modernc.org/sqlite,方便编译成单文件可执行程序。 - 保底保存所有表格单元格到
cells。 - 对常见报备表这种“标题行 + 表头行 + 数据行”的结构,自动生成
fields,便于按字段检索。 - 内置导出
fields/cellsCSV,不要求普通用户额外安装sqlite3。
编译
go build -o bin/wordtable2sqlite .
给非技术用户使用时,分发 bin/wordtable2sqlite 这个可执行文件即可。
使用
./bin/wordtable2sqlite -reset -db data/report.sqlite input.docx
批量导入多个文件:
./bin/wordtable2sqlite -db data/report.sqlite *.docx
导出字段化内容 CSV:
./bin/wordtable2sqlite export-fields -db data/report.sqlite -out data/report-fields.csv
导出原始单元格 CSV:
./bin/wordtable2sqlite export-cells -db data/report.sqlite -out data/report-cells.csv
参数:
-db:输出 SQLite 文件路径,默认word_tables.sqlite-reset:导入前删除旧数据库-quiet:不输出每个文件的摘要
适用范围
当前字段推断优先覆盖常见报备表:一行标题、一行表头、一行或多行数据。横向合并的表头会按逻辑列范围合并对应值。复杂多行表头、纵向合并、嵌套表格仍建议同时查看 cells 原始单元格结果。
数据表
documents:每个导入的 Word 文件。tables:Word 文档中的表格。cells:每个表格单元格,包含表格序号、行号、列号、跨列数和文本。fields:自动推断出的字段,常用于报备表检索。
常用查询:
SELECT key, value
FROM fields
ORDER BY id;
SELECT table_index, row_index, cell_index, text
FROM cells
ORDER BY table_index, row_index, cell_index;
验证
go test ./...
go vet ./...
go build -o bin/wordtable2sqlite .