73 lines
1.9 KiB
Markdown
73 lines
1.9 KiB
Markdown
|
|
# office
|
||
|
|
|
||
|
|
极简、高效的 Go Excel 处理库,基于 `excelize` 构建,符合 `@go` 设计哲学。
|
||
|
|
|
||
|
|
## 特性
|
||
|
|
|
||
|
|
- **统一 API**: 提供极简的 `Open`, `Save`, `Get`, `Set` 等操作。
|
||
|
|
- **自动对齐**: 自动处理工作表的创建和索引。
|
||
|
|
- **对象映射**: 支持将 `[]map[string]any` 直接写入 Excel 或从 Excel 读取。
|
||
|
|
- **高性能**: 尽量减少内存分配和冗余操作。
|
||
|
|
|
||
|
|
## 快速开始
|
||
|
|
|
||
|
|
### 安装
|
||
|
|
|
||
|
|
```bash
|
||
|
|
go get apigo.cc/go/office
|
||
|
|
```
|
||
|
|
|
||
|
|
### 基础用法
|
||
|
|
|
||
|
|
```go
|
||
|
|
import "apigo.cc/go/office"
|
||
|
|
|
||
|
|
// 创建并写入
|
||
|
|
xls := office.New()
|
||
|
|
table := [][]any{
|
||
|
|
{"Name", "Age"},
|
||
|
|
{"Alice", 25},
|
||
|
|
{"Bob", 30},
|
||
|
|
}
|
||
|
|
xls.Set("Sheet1", table, "A1", "")
|
||
|
|
xls.Save("example.xlsx")
|
||
|
|
|
||
|
|
// 读取
|
||
|
|
xls2, _ := office.Open("example.xlsx")
|
||
|
|
data, _ := xls2.Get("Sheet1", "A1", "")
|
||
|
|
```
|
||
|
|
|
||
|
|
### 对象列表操作
|
||
|
|
|
||
|
|
```go
|
||
|
|
data := []map[string]any{
|
||
|
|
{"Name": "Alice", "Age": 25},
|
||
|
|
{"Name": "Bob", "Age": 30},
|
||
|
|
}
|
||
|
|
xls.SetData("Users", data, "A1", "")
|
||
|
|
```
|
||
|
|
|
||
|
|
## API 参考
|
||
|
|
|
||
|
|
### 核心函数
|
||
|
|
|
||
|
|
- `New() *Excel`: 创建新的 Excel 对象。
|
||
|
|
- `Open(filename string, password ...string) (*Excel, error)`: 打开现有文件。
|
||
|
|
|
||
|
|
### Excel 方法
|
||
|
|
|
||
|
|
- `Save(filename ...string) error`: 保存文件。
|
||
|
|
- `Bytes() ([]byte, error)`: 获取字节切片。
|
||
|
|
- `Set(sheetName string, table [][]any, start, end string) error`: 写入二维数据。
|
||
|
|
- `Get(sheetName string, start, end string) ([][]any, error)`: 读取二维数据。
|
||
|
|
- `SetData(sheetName string, data []map[string]any, start, end string) error`: 写入对象列表。
|
||
|
|
- `GetData(sheetName string, start, end string) ([]map[string]any, error)`: 读取对象列表。
|
||
|
|
- `Sheets() []string`: 获取工作表列表。
|
||
|
|
- `RemoveSheet(sheetName string) error`: 删除工作表。
|
||
|
|
|
||
|
|
### 工具函数
|
||
|
|
|
||
|
|
- `MakeCellID(col, row int) string`: 生成单元格 ID (如 "A1")。
|
||
|
|
- `ParseCellID(cell string) (col, row int)`: 解析单元格 ID。
|
||
|
|
- `MakeColID(col int) string`: 生成列 ID (如 "A")。
|