夜雨聆风学习资料网

ARTICLE · 1150539

后端开发者必看:用Go处理Excel,这个开源库太实用了

后端开发者必看:用Go处理Excel,这个开源库太实用了
引言

在日常开发中,我们经常会遇到和 Excel 打交道的场景:

  • 做数据导入导出

  • 生成统计报表

  • 批量处理业务数据

如果你用 Go 语言写后端服务,想操作 Excel 文件,推荐一个非常实用的库 — Excelize。今天就带你快速上手,用 Go 来“玩转” Excel。

1.为什么选 Excelize?
  • 功能全:读写、修改、公式、图表、样式都支持。

  • 性能好:底层用流式处理,大文件也能跑。

  • 跨平台:只要是 Go 支持的平台,就能用。

  • 国产开源:项目由国内开发者维护,文档齐全。

一句话总结:Excelize 就是 Go 世界里的 Excel 瑞士军刀。

2.安装 Excelize

使用 Go Modules 的项目,可以直接:

go get github.com/xuri/excelize/v2
3.创建 Excel 文件并写入数据

我们先写个最简单的例子:新建一个 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 打开就能看到表格了。

4.读取 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 的数据。

5.进阶用法
设置样式和公式

除了简单的读写,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 的读写和处理。

相关学习资料