ARTICLE · 1150539
后端开发者必看:用Go处理Excel,这个开源库太实用了
后端开发者必看:用Go处理Excel,这个开源库太实用了引言 1.为什么选 Excelize? 2.安装 Excelize 3.创建 Excel 文件并写入数据 4.读取 Excel 文件 5.进阶用法 设置样式和公式 总结
在日常开发中,我们经常会遇到和 Excel 打交道的场景:
做数据导入导出
生成统计报表
批量处理业务数据
如果你用 Go 语言写后端服务,想操作 Excel 文件,推荐一个非常实用的库 — Excelize。今天就带你快速上手,用 Go 来“玩转” Excel。
功能全:读写、修改、公式、图表、样式都支持。
性能好:底层用流式处理,大文件也能跑。
跨平台:只要是 Go 支持的平台,就能用。
国产开源:项目由国内开发者维护,文档齐全。
一句话总结:Excelize 就是 Go 世界里的 Excel 瑞士军刀。
使用 Go Modules 的项目,可以直接:
go get github.com/xuri/excelize/v2我们先写个最简单的例子:新建一个 Excel 文件,并写入几行数据。
package mainimport ("fmt""github.com/xuri/excelize/v2")funcmain() {f := excelize.NewFile()// 设置单元格内容f.SetCellValue("Sheet1", "A1", "姓名")f.SetCellValue("Sheet1", "B1", "成绩")f.SetCellValue("Sheet1", "A2", "Alice")f.SetCellValue("Sheet1", "B2", 90)f.SetCellValue("Sheet1", "A3", "Bob")f.SetCellValue("Sheet1", "B3", 85)// 保存文件if err := f.SaveAs("scores.xlsx"); err != nil {fmt.Println(err)}}
运行后,会在当前目录生成一个scores.xlsx文件,用 Excel 打开就能看到表格了。
假设我们要读取刚才生成的表格:
package mainimport ("fmt""github.com/xuri/excelize/v2")funcmain() {f, err := excelize.OpenFile("scores.xlsx")if err != nil {fmt.Println(err)return}// 读取单元格name, _ := f.GetCellValue("Sheet1", "A2")score, _ := f.GetCellValue("Sheet1", "B2")fmt.Printf("姓名: %s, 成绩: %s\n", name, score)// 读取整行rows, _ := f.GetRows("Sheet1")for _, row := range rows {fmt.Println(row)}}
这样我们就能像操作数组一样,遍历 Excel 的数据。
除了简单的读写,Excelize 还能设置样式、公式、甚至画图。比如:
style, _ := f.NewStyle(`{"font":{"bold":true,"color":"#FFFFFF"},"fill":{"type":"pattern","color":["#4F81BD"],"pattern":1}}`)f.SetCellStyle("Sheet1", "A1", "B1", style)// 设置公式f.SetCellFormula("Sheet1", "B4", "AVERAGE(B2:B3)")
这样就能把表头设成带背景色的粗体,并在B4位置自动计算平均分。
写数据:
SetCellValue读数据:
GetCellValue、GetRows美化表格:
SetCellStyle自动计算:
SetCellFormula
只要几行 Go 代码,就能完成 Excel 的读写和处理。