首页 > 编程笔记 > Go语言笔记 阅读:10

Go语言excelize包读写Excel文件(附带实例)

Microsoft Office 是十分常用的办公软件,很多用户与系统之间的数据交互载体都会选择 Office 办公软件,因为用户不会使用 JSON 文件、CSV 文件或 Yaml 文件等这类开发配置文件。

Office 办公软件使用频率最高的是 Excel,它的功能比 Word 和 PPT 都要强大和实用,虽然 CSV 能用 Excel 软件打开和编辑,但 CSV 无法保存 Excel 的功能,比如数据透视表、函数公式等,因为 CSV 无法保存这些特殊数据。

Go 语言读写 Excel 文件必须依赖第三方包实现,在 GitHub 搜索关键词“go excel”,编程语言选择 Go 就能找到相关的第三方包,如下图所示。

图 1 搜索第三方包

在选择第三方包的时候,我们通常从 3 个维度判断是否适合开发需求:
根据 3 个维度的判断标准,我们选择第三方包 excelize 实现 Excel 的读写操作。首先在 CMD 窗口或 GoLand 的 Terminal 窗口输入“go get xxx”指令下载第三方包,如下图所示。


图 2 下载第三方包

这里推荐使用 go mod 管理第三方包,根据 excelize 文档说明,我们应该输入安装指令:
go get github.com/xuri/excelize/v2

下一步在 E 盘下创建文件夹 mygo,分别创建文件 chapter14.8.go 和使用 go mod init mygo 指令创建文件 go.mod,目录结构如下图所示。


图 3 目录结构

使用 GoLand 以项目形式打开文件夹 mygo,在 go.mod 中设置第三方包的信息,代码如下:
module mygo

go 1.18

require (
   github.com/xuri/excelize/v2 v2.4.1 // indirect
)
最后在 chapter14.8.go 中调用第三方包 excelize 实现 Excel 的读写过程,实现代码如下:
package main

import (
   "fmt"
   "github.com/xuri/excelize/v2"
)

func main() {
   // NewFile()创建新的Excel文件
   f := excelize.NewFile()
   // NewSheet()在Excel里面创建Sheet2
   index := f.NewSheet("Sheet2")
   // 在Sheet2的单元格写入数据
   f.SetCellValue("Sheet2", "A2", "Hello world")
   f.SetCellValue("Sheet1", "B2", 100)
   // 设置工作簿的默认工作表
   f.SetActiveSheet(index)
   // 从Sheet2获取单元格A2的值
   cell, _ := f.GetCellValue("Sheet2", "A2")
   fmt.Printf("Sheet2的单元格A2的值:%v\n", cell)
   // 保存Excel文件
   err := f.SaveAs("./Book1.xlsx")
   if err != nil {
        fmt.Println(err)
   }
}
运行上述代码之后,程序在当前目录(即文件夹 mygo)创建 Excel 文件 Book1.xlsx,打开 Book1.xlsx 就能看到 Sheet1 的 B2 和 Sheet2 的 A2 分别写入 100 和 Hello world。

上述示例一共执行了 6 个操作,说明如下:

图 4 工作表Sheet

综上所述,使用第三方包 excelize 实现 Excel 的读写过程如下:
第三方包 excelize 提供了完善的官方文档,并提供了中文文档,更多的 Excel 文档操作教程可以参考 https://xuri.me/excelize/zh-hans/

相关文章