Go语言Excel处理利器:Excelize库的安装与基础操作指南

山间有风
山间有风
发布时间:2026-10-15 | 4人浏览过
原创

在处理Excel文档时,Go语言开发者常需借助第三方库。本文详细介绍Excelize库的安装方法,并通过读写单元格、导出文件的完整代码示例,展示如何利用该库实现Excel的基础操作功能。

Excelize简介

Excelize 是 Go 语言编写的用于操作 Office Excel 文档类库。它支持读取和写入 Excel 文件(.xlsx/.xlsm 等格式),同时具备向文档中插入图片、图表及图标的功能。相比于手动生成 CSV 或使用底层 XML 解析,Excelize 提供了更完善的 API,足以满足大多数基本的办公文档自动化需求。

环境准备与安装

在使用 Excelize 之前,需要确保本地已配置好 Go 开发环境。目前推荐使用 v2 版本以获得最佳兼容性和性能。在终端中执行以下命令下载依赖:

go get github.com/xuri/excelize/v2

在代码文件中引入该包即可开始使用:

import "github.com/xuri/excelize/v2"

创建并导出 Excel 文档

本示例演示如何创建一个新工作簿,自定义多张工作表,设置单元格的值,并将其保存为本地 xlsx 文件。主要步骤包括初始化文件对象、新增工作表、设置数据并保存。

第1步:创建工作簿与新增工作表

首先调用 excelize.NewFile() 创建一个默认包含 Sheet1 的新文件实例。接着通过 NewSheet 方法添加第二个工作表,该方法会返回新表的索引号或错误信息。

第2步:设置单元格内容

使用 SetCellValue 指定目标工作表名称和坐标位置写入数据。例如将文本写入 Sheet2 的 A2 单元格,数值写入 Sheet1 的 B2 单元格。注意数据类型需符合 Excel 规范。

第3步:设置激活状态并保存

若希望打开文件时默认显示新建的工作表,可使用 SetActiveSheet 传入上一步获取的索引。最后调用 SaveAs 指定输出文件名完成导出。

package main

import (
	"fmt"

	"github.com/xuri/excelize/v2"
)

func main() {
	f := excelize.NewFile()
	// 创建一个工作表
	index := f.NewSheet("Sheet2")
	// 设置单元格的值
	f.SetCellValue("Sheet2", "A2", "Hello world.")
	f.SetCellValue("Sheet1", "B2", 100)
	// 设置工作簿的默认工作表
	f.SetActiveSheet(index)
	// 根据指定路径保存文件
	if err := f.SaveAs("export.xlsx"); err != nil {
		fmt.Println(err)
	}
}

读取已有 Excel 文档

针对已有的 .xlsx 文件,可以通过 OpenFile 方法加载到内存中进行数据提取。读取过程需注意错误处理,并在程序结束时关闭文件以释放资源。

第1步:打开文件与安全检查

调用 excelize.OpenFile 传入文件路径。由于涉及磁盘 I/O 操作,必须判断 err 是否为空,以确保文件存在且未被其他进程锁定。

第2步:单行单元格定位读取

若只需获取特定位置的数据,使用 GetCellValue 传入工作表名和坐标字符串。该方法返回读取到的字符串内容及错误信息。

第3步:整表数据遍历

如需批量处理数据,可利用 GetRows 获取指定工作表的所有有效行数据。该方法返回二维切片,外层为行,内层为列单元格内容。遍历该结构即可打印或处理全表数据。

package main

import (
	"fmt"

	"github.com/xuri/excelize/v2"
)

func main() {
	f, err := excelize.OpenFile("Book1.xlsx")
	if err != nil {
		fmt.Println(err)
		return
	}
	defer func() {
		if err := f.Close(); err != nil {
			fmt.Println(err)
		}
	}()
	// 获取工作表中指定单元格的值
	cell, err := f.GetCellValue("Sheet1", "B2")
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(cell)
	// 获取 Sheet1 上所有单元格
	rows, err := f.GetRows("Sheet1")
	if err != nil {
		fmt.Println(err)
		return
	}
	for _, row := range rows {
		for _, colCell := range row {
			fmt.Print(colCell, "\t")
		}
		fmt.Println()
	}
}

总结

Excelize 为 Go 语言提供了全面且易用的 Excel 处理能力。通过简单的几行代码即可完成从创建文件、写入内容到解析现有文档的全流程。对于需要集成报表导出或数据导入功能的业务系统,该库是一个稳定可靠的选择。

以上就是 Go 语言使用 Excelize 处理 Excel 文档的详细内容,更多关于 Go 操作 Excel 的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表