在 Go 语言生态中,Excel 操作一直是开发者的痛点。传统的解决方案要么依赖外部程序(如调用 Python 脚本),要么使用 COM 组件(仅限 Windows),要么功能受限(如仅能处理 CSV)。excelize 的出现改变了这一局面。作为 GitHub 上 20.5k+ Stars 的明星项目,它已成为 Go 语言处理 Excel 的事实标准,被广泛应用于数据导出、报表生成、数据分析等场景。
核心优势
| |
|---|
| 性能 | |
| 功能 | 覆盖 Excel 90%+ 功能,包括图表、透视表、数据验证 |
| 兼容性 | 支持 XLSX/XLSM/XLAM/XLTX/XLTM 全格式 |
| 部署 | |
核心功能详解
1. 基础读写操作
excelize 提供了简洁的 API 进行单元格读写:
f := excelize.NewFile()f.SetCellValue("Sheet1", "A1", "字符串")f.SetCellValue("Sheet1", "A2", 12345)f.SetCellValue("Sheet1", "A3", 3.14159)val, _ := f.GetCellValue("Sheet1", "A1")
2. 样式系统
支持完整的 Excel 样式设置:
style, _ := f.NewStyle(&excelize.Style{ Font: &excelize.Font{ Name: "微软雅黑", Size: 12, Bold: true, Color: "FFFFFF", }, Fill: excelize.Fill{ Type: "pattern", Color: []string{"4472C4"}, Pattern: 1, }, Alignment: &excelize.Alignment{ Horizontal: "center", Vertical: "center", },})f.SetCellStyle("Sheet1", "A1", "C10", style)
3. 图表生成
内置 60+ 种图表类型,满足数据可视化需求:
chart := &excelize.Chart{ Type: excelize.Col3DClustered, Series: []excelize.ChartSeries{ {Name: "销售额", Categories: "Sheet1!$A$2:$A$13", Values: "Sheet1!$B$2:$B$13"}, {Name: "利润", Categories: "Sheet1!$A$2:$A$13", Values: "Sheet1!$C$2:$C$13"}, }, Title: excelize.ChartTitle{Name: "年度销售分析"},}f.AddChart("Sheet1", "E2", chart)

4. 流式写入(大数据处理)
对于百万级数据,传统写入会内存溢出,流式写入是最佳实践:
file := excelize.NewFile()streamWriter, _ := file.NewStreamWriter("Sheet1")header := []interface{}{"ID", "名称", "数值", "时间"}streamWriter.SetRow("A1", header)for i := 1; i <= 1000000; i++ { row := []interface{}{i, fmt.Sprintf("Item_%d", i), rand.Float64() * 1000, time.Now().Format("2024-01-01")} streamWriter.SetRow(fmt.Sprintf("A%d", i+1), row)}streamWriter.Flush()file.SaveAs("大数据.xlsx")
性能对比
结论:excelize 在性能和资源占用上具有明显优势,特别适合服务端部署。
总结
如果你是一名 Go 开发者,经常需要处理 Excel 文件,excelize 绝对是你的不二之选。它让原本复杂的 Excel 操作变得简单优雅,无论是数据导出、报表生成还是批量处理,都能轻松应对。最重要的是,它是纯 Go 实现,部署的时候再也不用担心环境问题,一个二进制文件走天下。还在用 Python 脚本处理 Excel?是时候拥抱 Go 语言的原生方案了!
项目地址:https://github.com/qax-os/excelize官方文档:https://xuri.me/excelize/