Initial word table SQLite importer

This commit is contained in:
赵义仑
2026-06-24 16:21:57 +08:00
commit 9fab4c73ed
7 changed files with 1074 additions and 0 deletions

60
README.md Normal file
View File

@@ -0,0 +1,60 @@
# wordtable2sqlite
`.docx` 里的 Word 表格内容导入 SQLite 的最小 Go 工具。
详细操作说明见:[HOWTO.md](HOWTO.md)
## 特点
- 不依赖 Word、WPS、Python 或 LibreOffice。
- 直接解析 `.docx` 内部的 `word/document.xml`
- SQLite 使用纯 Go 驱动 `modernc.org/sqlite`,方便编译成单文件可执行程序。
- 保底保存所有表格单元格到 `cells`
- 对常见报备表这种“标题行 + 表头行 + 数据行”的结构,自动生成 `fields`,便于按字段检索。
## 编译
```bash
go build -o bin/wordtable2sqlite .
```
给非技术用户使用时,分发 `bin/wordtable2sqlite` 这个可执行文件即可。
## 使用
```bash
./bin/wordtable2sqlite -reset -db data/report.sqlite input.docx
```
批量导入多个文件:
```bash
./bin/wordtable2sqlite -db data/report.sqlite *.docx
```
参数:
- `-db`:输出 SQLite 文件路径,默认 `word_tables.sqlite`
- `-reset`:导入前删除旧数据库
- `-quiet`:不输出每个文件的摘要
## 数据表
- `documents`:每个导入的 Word 文件。
- `tables`Word 文档中的表格。
- `cells`:每个表格单元格,包含表格序号、行号、列号、跨列数和文本。
- `fields`:自动推断出的字段,常用于报备表检索。
常用查询:
```sql
SELECT key, value
FROM fields
ORDER BY id;
```
```sql
SELECT table_index, row_index, cell_index, text
FROM cells
ORDER BY table_index, row_index, cell_index;
```