document/README.md

76 lines
1.8 KiB
Markdown
Raw Normal View History

# office
极简、高效的 Go Office 文档处理库,符合 `@go` 设计哲学。支持 Excel、Word (Docx)、PowerPoint (Pptx) 和 PDF 的解析与处理。
## 特性
- **统一 API**: 提供极简的 `Open`, `Save`, `Text` 等操作。
- **纯 Go 实现**: 无 CGo 依赖,跨平台支持。
- **解析与识别**: 支持从 Docx、Pptx 和 PDF 中提取纯文本内容。
- **Excel 增强**: 自动处理工作表对齐,支持对象列表 (`[]map`) 的直接读写。
## 快速开始
### 安装
```bash
go get apigo.cc/go/office
```
### Excel 处理
```go
// 写入数据
xls := office.New()
xls.Set("Sheet1", [][]any{{"Name", "Age"}, {"Alice", 25}}, "A1", "")
xls.Save("example.xlsx")
// 读取对象列表
xls2, _ := office.Open("example.xlsx")
data, _ := xls2.GetData("Sheet1", "A1", "")
```
### Word (Docx) 解析
```go
doc, _ := office.OpenDocx("contract.docx")
text, _ := doc.Text() // 提取全文文本
fmt.Println(text)
```
### PowerPoint (Pptx) 解析
```go
ppt, _ := office.OpenPptx("presentation.pptx")
text, _ := ppt.Text() // 提取幻灯片全文
```
### PDF 解析
```go
pdf, _ := office.OpenPDF("report.pdf")
text, _ := pdf.Text() // 提取 PDF 纯文本
info := pdf.Info() // 获取页数、作者等元数据
```
## API 参考
### Excel
- `New() *Excel`
- `Open(filename string, password ...string) (*Excel, error)`
- `Set(sheetName string, table [][]any, start, end string) error`
- `SetData(sheetName string, data []map[string]any, start, end string) error`
### Word (Docx)
- `OpenDocx(filename string) (*Docx, error)`
- `Text() (string, error)`
### PowerPoint (Pptx)
- `OpenPptx(filename string) (*Pptx, error)`
- `Text() (string, error)`
### PDF
- `OpenPDF(filename string) (*PDF, error)`
- `Text() (string, error)`
- `Info() map[string]any`