Excelize 是用 Go 语言编写的开源库,专注于处理 Excel 文件(XLSX 格式)。由 qax-os 组织维护,支持创建、读取、编辑复杂 Excel 文档,适用于报表生成、数据导入导出等场景。
GitHub - qax-os/excelize: Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets[1]

StreamWriter 逐行写入,降低内存占用。package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
funcmain() {
f := excelize.NewFile()
defer f.Close()
// 创建新Sheet并写入数据
index, _ := f.NewSheet("Sheet2")
f.SetCellValue("Sheet1", "A1", "Hello")
f.SetCellValue("Sheet2", "B2", 123)
f.SetActiveSheet(index)
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println("保存失败:", err)
}
}
样式定义:通过 NewStyle 创建样式对象,应用至单元格:
style, _ := f.NewStyle(&excelize.Style{Font: &excelize.Font{Bold: true}})
f.SetCellStyle("Sheet1", "A1", "A1", style)
插入图表:指定数据范围生成图表:
f.AddChart("Sheet1", "E1", `{...}`) // JSON 配置图表参数
流式写入:高效处理大数据:
streamWriter, _ := f.NewStreamWriter("Sheet1")
for row := 1; row <= 10000; row++ {
cell, _ := excelize.CoordinatesToCellName(1, row)
streamWriter.SetRow(cell, []interface{}{fmt.Sprintf("Row %d", row)})
}
streamWriter.Flush()
添加三维簇状柱形图:
chart := &excelize.Chart{
Type: excelize.Col3DClustered,
Series: []excelize.ChartSeries{
{Name: "Sheet1!$A$2", Categories: "Sheet1!$B$1:$D$1", Values: "Sheet1!$B$2:$D$2"},
// 添加更多数据系列...
},
Title: []excelize.RichTextRun{{Text: "Fruit Sales Analysis"}},
}
f.AddChart("Sheet1", "E1", chart)
插入图片(支持缩放与打印设置):
err := f.AddPicture("Sheet1", "A2", "image.png", &excelize.GraphicOptions{
ScaleX: 0.5,
ScaleY: 0.5,
PrintObject: &enable, // 控制是否可打印
})
相较于 tealeg/xlsx,Excelize 更新更活跃,支持更多新特性(如公式、数据透视表)。若项目需复杂 Excel 操作或高性能处理,推荐优先选择 Excelize。
Excelize 是 Go 生态中处理 Excel 的首选库,平衡了功能丰富性与性能,适合各类需要高效操作 Excel 文件的场景。通过其清晰的 API 和强大功能,开发者能轻松实现复杂的电子表格交互需求。
[1]GitHub - qax-os/excelize: Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets: https://github.com/qax-os/excelize
<<相关阅读>>
每日一库:Ants —— 高性能低损耗的 Goroutine
每日一库:go-astisub —— 专注于多格式字幕文件的处理