qax-os/excelize
数据用纯 Go 读写 Excel 电子表格文件的库,适合在 Go 服务和数据处理脚本中生成或解析工作簿。
项目介绍
Excelize 是一个用纯 Go 编写的库,可以读写 XLAM、XLSM、XLSX、XLTM、XLTX 格式的电子表格,支持 Excel 2007 及之后版本生成的文件,面向需要在 Go 服务、脚本或数据管道中生成、修改、提取表格数据的开发者。
库提供单元格、工作表、图表、图片等常用组件的读写函数,并针对超大工作表提供流式 API,用于批量生成或读取数据。生成的 XML 遵循 ECMA-376 Office Open XML 标准 README、ECMA-376。完整文档可通过 Go 自带的文档工具查看,也可查阅 go.dev API 文档 和在线文档 docs reference。
快速使用
Excelize 要求 Go 1.26.0 或更高版本。启用 Go Modules 后,安装 v2 模块:
go get github.com/xuri/excelize/v2
代码中的导入路径为 github.com/xuri/excelize/v2。下面的最小示例创建一个工作簿,写入两个单元格,新增工作表并保存文件 创建示例:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
index, err := f.NewSheet("Sheet2")
if err != nil {
fmt.Println(err)
return
}
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
f.SetActiveSheet(index)
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
运行后会在当前目录生成 Book1.xlsx。读取已有文件也采用相同模式:用 excelize.OpenFile("Book1.xlsx") 打开,用 GetCellValue 读取单个单元格,或用 GetRows 读取整张表的所有行,最后关闭文件 读取示例。README 还提供了插入图表 图表示例 和图片 图片示例 的示例。
使用约束
- Go 版本: 需要 Go 1.26.0 或更高版本,推荐用 Go Modules 管理依赖 安装说明。
- 文件格式: 支持 XLAM、XLSM、XLSX、XLTM、XLTX,主要面向 Excel 2007 及之后版本生成的文件。
- 大数据量: 生成或读取超大工作表时应使用流式 API,而不是常规工作表函数。
- 许可证: BSD 3-Clause 许可证。仓库内附带的 Excel 标志和 Go gopher 图案另有署名要求。
HotRepo 点评
在 2026-11-03 的 Go 语言日榜中,Excelize 新增 13 个 Star,当天最好名次为第 2,总 Star 数 21,046,Fork 数 1,986。这条单日快照说明项目在 Go 生态中仍有关注度,但不足以判断增长趋势。从技术上看,它的定位是纯 Go 的电子表格读写实现,并提供流式处理能力,对需要处理大型 Excel 文件的 Go 服务而言是一个实用的依赖选项。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。