使用tealeg/xlsx库读写Excel文件的完整指南
xlsx Go library for reading and writing XLSX files. 项目地址: https://gitcode.com/gh_mirrors/xl/xlsx
前言
在Go语言生态中,tealeg/xlsx是一个功能强大且广泛使用的Excel文件处理库。本文将从基础到高级,全面介绍如何使用这个库进行Excel文件的读写操作。
环境准备
安装库
首先需要导入tealeg/xlsx库到你的项目中:
import "github.com/tealeg/xlsx/v3"
建议使用3.x版本,因为该版本修复了许多bug并增加了新功能。特别是3.2.0版本开始,可以获取行和列的坐标信息,这在早期版本中是不提供的。
基础操作
打开和创建文件
打开现有文件:
wb, err := xlsx.OpenFile("sample.xlsx")
if err != nil {
panic(err)
}
创建新文件:
wb := xlsx.NewFile()
工作表操作
获取工作表:
sheet, ok := wb.Sheet["Sheet1"]
if !ok {
fmt.Println("工作表不存在")
}
创建工作表:
sheet, err := wb.AddSheet("新工作表")
if err != nil {
fmt.Println("创建工作表失败:", err)
}
注意工作表命名规则:
- 长度1-31个字符
- 不能包含: / ? * [ ]等特殊字符
获取工作表信息:
fmt.Println("工作表行数:", sheet.MaxRow)
数据操作
行操作
获取行:
row, err := sheet.Row(1) // 获取第二行(0-based)
添加行:
row := sheet.AddRow() // 在末尾添加
row := sheet.AddRowAtIndex(2) // 在指定位置添加
遍历行:
func rowVisitor(r *xlsx.Row) error {
fmt.Println("行号:", r.GetCoordinate())
return nil
}
sheet.ForEachRow(rowVisitor)
单元格操作
获取单元格:
cell := row.GetCell(0) // 获取第一列
cell, err := sheet.Cell(1, 0) // 获取第二行第一列
单元格类型:
Excel单元格支持多种数据类型:
- 布尔值
- 字符串
- 公式
- 数字
- 日期
- 错误
- 空值
设置单元格值:
cell.SetString("文本")
cell.SetInt(42)
cell.SetFloat(3.14)
cell.SetBool(true)
cell.SetDate(time.Now())
获取单元格值:
str := cell.String()
num, err := cell.Int()
f, err := cell.Float()
b, err := cell.Bool()
formatted, err := cell.FormattedValue()
遍历单元格:
func cellVisitor(c *xlsx.Cell) error {
x, y := c.GetCoordinates()
val, _ := c.FormattedValue()
fmt.Printf("单元格(%d,%d): %s\n", x, y, val)
return nil
}
row.ForEachCell(cellVisitor)
实用技巧
坐标转换
// 列索引转字母
colName := xlsx.ColIndexToLetters(27) // "AB"
// 列字母转索引
colIdx := xlsx.ColLettersToIndex("BY") // 76
// 单元格地址转坐标
x, y := xlsx.GetCoordsFromCellIDString("BY13") // 76, 12
// 坐标转单元格地址
addr := xlsx.GetCellIDStringFromCoords(76, 12) // "BY13"
日期处理
Excel中的日期实际上是带有日期格式的数字值。处理时需要注意:
// 设置日期
cell.SetDate(time.Now())
// 获取日期
if cell.Type() == xlsx.CellTypeNumeric {
excelTime := cell.Value
// 需要自己处理Excel时间到time.Time的转换
}
最佳实践
- 及时关闭工作表:完成操作后调用
sheet.Close()
释放资源 - 错误检查:几乎所有操作都可能返回错误,务必检查
- 性能考虑:对于大数据量,考虑使用流式API
- 版本兼容:注意不同Excel版本的功能差异
总结
tealeg/xlsx库提供了完整的Excel文件操作能力。通过本文介绍的基础操作和高级技巧,你应该能够处理大多数Excel文件操作场景。记住在实际开发中,合理处理错误和资源释放是保证程序稳定性的关键。
希望这篇指南能帮助你更好地使用tealeg/xlsx库进行开发。如果有任何问题,可以参考库的文档或社区讨论。
xlsx Go library for reading and writing XLSX files. 项目地址: https://gitcode.com/gh_mirrors/xl/xlsx
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考