Rename to 'document' and align version to 1.0.3
This commit is contained in:
parent
baf0b3835d
commit
bb320e4e5f
32
CHANGELOG.md
32
CHANGELOG.md
@ -1,29 +1,9 @@
|
|||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
|
||||||
## v1.3.0 (2026-05-12)
|
## v1.0.3 (2026-05-12)
|
||||||
|
|
||||||
- 核心架构重构:引入统一的 `Document` 接口,支持 **Open/Create/Save** 的极简 API 范式。
|
- 重构并更名为 `document`,统一处理 Excel, Word, PPT, PDF。
|
||||||
- 自动识别:`office.Open(path)` 可根据后缀名自动选择解析器。
|
- 引入 `Document` 接口,支持 **Open/Create/Save** 的极简 API。
|
||||||
- 标准化载体:所有文档类型均支持 `ToJSON()` 和 `ToMarkdown()`,完美对齐 AI 工作流。
|
- 所有文档支持载体化操作:`ToJSON()` 和 `ToMarkdown()`。
|
||||||
- 零摩擦设计:Excel 导出自动处理 Sheet 和列扩展;PDF/Word/PPT 提取自动结构化。
|
- 基础设施全面对齐 `@go` 标准库。
|
||||||
|
- 修复 Excel 动态列扩展与 JSON 互转逻辑。
|
||||||
## v1.2.0 (2026-05-12)
|
|
||||||
|
|
||||||
- 新增 Excel 与 JSON 的双向转换支持 (`ToJSON`, `FromJSON`)。
|
|
||||||
- 为 Word、PPT 和 PDF 统一增加 `ToMarkdown` 方法,提升 AI 友好度。
|
|
||||||
- 强化 Excel 导出逻辑,支持从 JSON 直接生成结构化表格。
|
|
||||||
|
|
||||||
## v1.1.0 (2026-05-12)
|
|
||||||
|
|
||||||
- 新增 Word (`.docx`) 解析支持,可提取全文纯文本。
|
|
||||||
- 新增 PowerPoint (`.pptx`) 解析支持,可提取幻灯片纯文本。
|
|
||||||
- 新增 PDF 解析支持,可提取全文纯文本及元数据(页数、作者等)。
|
|
||||||
- 保持全纯 Go 实现,无 CGo 依赖。
|
|
||||||
|
|
||||||
## v1.0.0 (2026-05-12)
|
|
||||||
|
|
||||||
- 从 `gojs/office` 迁移并重构为纯 Go 实现。
|
|
||||||
- 基础设施对齐:使用 `apigo.cc/go/cast` 和 `apigo.cc/go/file`。
|
|
||||||
- 移除 `gojs` 和 `goja` 相关依赖。
|
|
||||||
- 优化 `SetData` 和 `GetData` 的逻辑,支持自动扩展列。
|
|
||||||
- 提供更简洁的 `Open` 和 `New` 入口。
|
|
||||||
|
|||||||
31
README.md
31
README.md
@ -1,10 +1,10 @@
|
|||||||
# office
|
# document
|
||||||
|
|
||||||
极简、高效的 Go Office 文档处理桥梁,符合 `@go` 设计哲学。
|
极简、高效的 Go 办公文档处理桥梁,符合 `@go` 设计哲学。
|
||||||
|
|
||||||
## 核心设计
|
## 核心设计
|
||||||
|
|
||||||
`office` 包将所有复杂的文档格式(Excel, Word, PPT, PDF)抽象为统一的 `Document` 接口。你只需要关心 **数据载体** (JSON/Markdown),而不需要关心底层实现。
|
`document` 包将所有复杂的文档格式(Excel, Word, PPT, PDF)抽象为统一的 `Document` 接口。你只需要关心 **数据载体** (JSON/Markdown),而不需要关心底层实现。
|
||||||
|
|
||||||
- **结构化数据 (Excel)** <-> **JSON**
|
- **结构化数据 (Excel)** <-> **JSON**
|
||||||
- **半结构化内容 (Word/PPT/PDF)** -> **Markdown**
|
- **半结构化内容 (Word/PPT/PDF)** -> **Markdown**
|
||||||
@ -12,18 +12,17 @@
|
|||||||
## 统一 API
|
## 统一 API
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import "apigo.cc/go/office"
|
import "apigo.cc/go/document"
|
||||||
|
|
||||||
// 1. 打开文档 (自动识别类型)
|
// 1. 打开文档 (自动识别类型)
|
||||||
doc, _ := office.Open("data.xlsx")
|
doc, _ := document.Open("data.xlsx")
|
||||||
|
|
||||||
// 2. 转换为通用载体
|
// 2. 转换为通用载体
|
||||||
jsonStr := doc.ToJSON() // 适合 Excel
|
jsonStr := doc.ToJSON() // 适合 Excel
|
||||||
mdStr := doc.ToMarkdown() // 适合 Word/PPT/PDF
|
mdStr := doc.ToMarkdown() // 适合 Word/PPT/PDF
|
||||||
|
|
||||||
// 3. 修改并保存 (Excel 支持数据回写)
|
// 3. 修改并保存 (Excel 支持数据回写)
|
||||||
// (对于 Excel,你可以强制断言获取更多方法)
|
if xls, ok := doc.(*document.Excel); ok {
|
||||||
if xls, ok := doc.(*office.Excel); ok {
|
|
||||||
xls.SetData("Sheet1", newData, "A1", "")
|
xls.SetData("Sheet1", newData, "A1", "")
|
||||||
}
|
}
|
||||||
doc.Save("updated.xlsx")
|
doc.Save("updated.xlsx")
|
||||||
@ -44,20 +43,10 @@ doc.Save("updated.xlsx")
|
|||||||
|
|
||||||
```go
|
```go
|
||||||
// 一行代码将 PDF 转为 AI 易读的 Markdown
|
// 一行代码将 PDF 转为 AI 易读的 Markdown
|
||||||
md, _ := office.Open("report.pdf").ToMarkdown()
|
md, _ := document.Open("report.pdf").ToMarkdown()
|
||||||
|
|
||||||
// 一行代码将 Excel 转为结构化 JSON
|
// 一行代码将 Excel 转为结构化 JSON
|
||||||
json, _ := office.Open("sales.xlsx").ToJSON()
|
json, _ := document.Open("sales.xlsx").ToJSON()
|
||||||
```
|
|
||||||
|
|
||||||
### 极简读写 (Excel)
|
|
||||||
|
|
||||||
```go
|
|
||||||
xls, _ := office.OpenExcel("config.xlsx")
|
|
||||||
data, _ := xls.GetData("Sheet1", "A1", "")
|
|
||||||
// ... 修改 data
|
|
||||||
xls.SetData("Sheet1", data, "A1", "")
|
|
||||||
xls.Save()
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## API 参考
|
## API 参考
|
||||||
@ -70,7 +59,3 @@ xls.Save()
|
|||||||
- `ToJSON() string`
|
- `ToJSON() string`
|
||||||
- `ToMarkdown() string`
|
- `ToMarkdown() string`
|
||||||
- `Save(filename ...string) error`
|
- `Save(filename ...string) error`
|
||||||
|
|
||||||
### 类型特定 (导出)
|
|
||||||
- `Excel`: 支持 `SetData`, `GetData`, `Sheets` 等。
|
|
||||||
- `Docx`, `Pptx`, `PDF`: 支持 `Content` 和 `Metadata` 直接访问。
|
|
||||||
|
|||||||
2
excel.go
2
excel.go
@ -1,4 +1,4 @@
|
|||||||
package office
|
package document
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package office
|
package document
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|||||||
2
go.mod
2
go.mod
@ -1,4 +1,4 @@
|
|||||||
module apigo.cc/go/office
|
module apigo.cc/go/document
|
||||||
|
|
||||||
go 1.25.0
|
go 1.25.0
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user