2026-05-12 13:21:03 +08:00
|
|
|
|
# document
|
2026-05-12 12:26:10 +08:00
|
|
|
|
|
2026-05-12 13:21:03 +08:00
|
|
|
|
极简、高效的 Go 办公文档处理桥梁,符合 `@go` 设计哲学。
|
2026-05-12 12:26:10 +08:00
|
|
|
|
|
2026-05-12 13:05:16 +08:00
|
|
|
|
## 核心设计
|
2026-05-12 12:26:10 +08:00
|
|
|
|
|
2026-05-12 13:21:03 +08:00
|
|
|
|
`document` 包将所有复杂的文档格式(Excel, Word, PPT, PDF)抽象为统一的 `Document` 接口。你只需要关心 **数据载体** (JSON/Markdown),而不需要关心底层实现。
|
2026-05-12 12:26:10 +08:00
|
|
|
|
|
2026-05-12 13:05:16 +08:00
|
|
|
|
- **结构化数据 (Excel)** <-> **JSON**
|
|
|
|
|
|
- **半结构化内容 (Word/PPT/PDF)** -> **Markdown**
|
2026-05-12 12:26:10 +08:00
|
|
|
|
|
2026-05-12 13:05:16 +08:00
|
|
|
|
## 统一 API
|
2026-05-12 12:26:10 +08:00
|
|
|
|
|
2026-05-12 13:05:16 +08:00
|
|
|
|
```go
|
2026-05-12 13:21:03 +08:00
|
|
|
|
import "apigo.cc/go/document"
|
2026-05-12 13:05:16 +08:00
|
|
|
|
|
|
|
|
|
|
// 1. 打开文档 (自动识别类型)
|
2026-05-12 13:21:03 +08:00
|
|
|
|
doc, _ := document.Open("data.xlsx")
|
2026-05-12 13:05:16 +08:00
|
|
|
|
|
|
|
|
|
|
// 2. 转换为通用载体
|
|
|
|
|
|
jsonStr := doc.ToJSON() // 适合 Excel
|
|
|
|
|
|
mdStr := doc.ToMarkdown() // 适合 Word/PPT/PDF
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 修改并保存 (Excel 支持数据回写)
|
2026-05-12 13:21:03 +08:00
|
|
|
|
if xls, ok := doc.(*document.Excel); ok {
|
2026-05-12 13:05:16 +08:00
|
|
|
|
xls.SetData("Sheet1", newData, "A1", "")
|
|
|
|
|
|
}
|
|
|
|
|
|
doc.Save("updated.xlsx")
|
2026-05-12 12:26:10 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-05-12 13:05:16 +08:00
|
|
|
|
## 支持格式
|
|
|
|
|
|
|
|
|
|
|
|
| 格式 | 后缀 | `ToJSON` 表现 | `ToMarkdown` 表现 | `Save` 行为 |
|
|
|
|
|
|
| :--- | :--- | :--- | :--- | :--- |
|
|
|
|
|
|
| **Excel** | `.xlsx` | 返回第一个 Sheet 的对象数组 | 返回第一个 Sheet 的 MD 表格 | 保存为 Excel 文件 |
|
|
|
|
|
|
| **Word** | `.docx` | 返回 `{"metadata":..., "content":...}` | 返回提取的全文文本 | 保存为纯文本文件 |
|
|
|
|
|
|
| **PPT** | `.pptx` | 返回 `{"metadata":..., "content":...}` | 返回提取的全文文本 | 保存为纯文本文件 |
|
|
|
|
|
|
| **PDF** | `.pdf` | 返回 `{"metadata":..., "content":...}` | 返回提取的全文文本 | 保存为纯文本文件 |
|
|
|
|
|
|
|
|
|
|
|
|
## 快速示例
|
|
|
|
|
|
|
|
|
|
|
|
### AI 友好型转换
|
2026-05-12 12:26:10 +08:00
|
|
|
|
|
|
|
|
|
|
```go
|
2026-05-12 13:05:16 +08:00
|
|
|
|
// 一行代码将 PDF 转为 AI 易读的 Markdown
|
2026-05-12 13:21:03 +08:00
|
|
|
|
md, _ := document.Open("report.pdf").ToMarkdown()
|
2026-05-12 13:05:16 +08:00
|
|
|
|
|
|
|
|
|
|
// 一行代码将 Excel 转为结构化 JSON
|
2026-05-12 13:21:03 +08:00
|
|
|
|
json, _ := document.Open("sales.xlsx").ToJSON()
|
2026-05-12 12:30:03 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## API 参考
|
2026-05-12 12:26:10 +08:00
|
|
|
|
|
2026-05-12 13:05:16 +08:00
|
|
|
|
### 顶级函数
|
|
|
|
|
|
- `Open(filename string, password ...string) (Document, error)`
|
|
|
|
|
|
- `Create(ext string) (Document, error)`
|
|
|
|
|
|
|
|
|
|
|
|
### Document 接口
|
|
|
|
|
|
- `ToJSON() string`
|
|
|
|
|
|
- `ToMarkdown() string`
|
|
|
|
|
|
- `Save(filename ...string) error`
|