server2008网站建设,php零基础做网站,自媒体运营从入门到精通,东莞网站优化排名网站在笔者开发的项目中#xff0c;有操作excel的需要#xff0c;由于go操作excel比较方便且功能强大#xff0c;于是选择使用go来操作excel。github.com/360EntSecGroup-Skylar/excelize库是一个功能强大且易于使用的库#xff0c;它支持创建、读取和修改 Excel 文件#xff…在笔者开发的项目中有操作excel的需要由于go操作excel比较方便且功能强大于是选择使用go来操作excel。github.com/360EntSecGroup-Skylar/excelize库是一个功能强大且易于使用的库它支持创建、读取和修改 Excel 文件兼容多种 Excel 版本格式。接下来将详细介绍如何使用该库进行 Excel 文件的读写操作。
一、安装 excelize 库
使用go get命令安装excelize库在终端中执行以下命令
go get github.com/360EntSecGroup-Skylar/excelize
安装完成后在 Go 代码中导入该库
import (github.com/360EntSecGroup-Skylar/excelize)
二、创建并写入 Excel 文件
1. 基本写入操作
下面的示例代码展示了如何使用excelize库创建一个新的 Excel 文件并向其中写入数据
package mainimport (github.com/360EntSecGroup-Skylar/excelize
)func main() {// 创建一个新的Excel文件f : excelize.NewFile()// 创建一个新的工作表index : f.NewSheet(Sheet1)// 设置单元格的值f.SetCellValue(Sheet1, A1, 姓名)f.SetCellValue(Sheet1, B1, 年龄)f.SetCellValue(Sheet1, A2, 小明)f.SetCellValue(Sheet1, B2, 20)// 设置默认工作表f.SetActiveSheet(index)// 保存文件if err : f.SaveAs(example.xlsx); err ! nil {println(err.Error())}
}
在上述代码中
首先通过excelize.NewFile()创建一个新的 Excel 文件对象。
接着使用NewSheet方法创建名为 “Sheet1” 的工作表并获取其索引。
然后通过SetCellValue方法设置指定单元格的值参数依次为工作表名称、单元格坐标和要设置的值。
再使用SetActiveSheet方法将创建的工作表设置为默认工作表。
最后调用SaveAs方法将文件保存到指定路径。
2. 批量写入数据
如果需要批量写入数据可以使用循环结合SetCellValue方法实现。例如将一个切片中的数据写入 Excel
package mainimport (github.com/360EntSecGroup-Skylar/excelize
)func main() {f : excelize.NewFile()index : f.NewSheet(Sheet1)data : [][]interface{}{{姓名, 年龄},{小红, 22},{小刚, 23},}for rowIndex, rowData : range data {for colIndex, cellData : range rowData {cell, err : excelize.CoordinatesToCellName(colIndex1, rowIndex1)if err ! nil {println(err.Error())return}f.SetCellValue(Sheet1, cell, cellData)}}f.SetActiveSheet(index)if err : f.SaveAs(batch_example.xlsx); err ! nil {println(err.Error())}
}
这里先定义了一个二维切片存储数据通过两层循环遍历切片使用CoordinatesToCellName方法将行列索引转换为单元格坐标再设置单元格值。
三、读取 Excel 文件
1. 读取指定单元格数据
以下示例展示了如何读取 Excel 文件中指定单元格的数据
package mainimport (fmtgithub.com/360EntSecGroup-Skylar/excelize
)func main() {f, err : excelize.OpenFile(example.xlsx)if err ! nil {fmt.Println(err.Error())return}defer f.Close()// 获取Sheet1工作表中A1单元格的值cell, err : f.GetCellValue(Sheet1, A1)if err ! nil {fmt.Println(err.Error())return}fmt.Println(cell)
} 代码中先使用OpenFile方法打开 Excel 文件成功打开后通过GetCellValue方法获取指定工作表和单元格的内容最后记得关闭文件。
2. 遍历读取工作表数据
若要遍历读取整个工作表的数据可以通过循环实现
package mainimport (fmtgithub.com/360EntSecGroup-Skylar/excelize
)func main() {f, err : excelize.OpenFile(example.xlsx)if err ! nil {fmt.Println(err.Error())return}defer f.Close()// 获取Sheet1工作表sheet : Sheet1rows, err : f.GetRows(sheet)if err ! nil {fmt.Println(err.Error())return}for _, row : range rows {for _, cell : range row {fmt.Printf(%s\t, cell)}fmt.Println()}
} 上述代码使用GetRows方法获取指定工作表的所有行数据返回一个二维字符串切片通过两层循环遍历切片打印出每个单元格的值。
四、设置单元格样式
excelize库还支持设置单元格样式如字体、颜色、对齐方式等。以下是一个设置单元格字体加粗、背景色为黄色的示例
package mainimport (github.com/360EntSecGroup-Skylar/excelize
)func main() {f : excelize.NewFile()index : f.NewSheet(Sheet1)f.SetCellValue(Sheet1, A1, 标题)// 创建样式style, err : f.NewStyle({font:{bold:true},fill:{type:pattern,color:[#FFFF00],pattern:1}})if err ! nil {println(err.Error())return}// 应用样式到单元格if err : f.SetCellStyle(Sheet1, A1, A1, style); err ! nil {println(err.Error())return}f.SetActiveSheet(index)if err : f.SaveAs(style_example.xlsx); err ! nil {println(err.Error())}
} 在这个例子中先通过NewStyle方法创建一个样式对象传入 JSON 格式的样式配置定义字体加粗和背景色。然后使用SetCellStyle方法将样式应用到指定的单元格区域。
五、使用公式
excelize库支持在 Excel 文件中使用公式。例如在单元格中设置求和公式
package mainimport (github.com/360EntSecGroup-Skylar/excelize
)func main() {f : excelize.NewFile()index : f.NewSheet(Sheet1)f.SetCellValue(Sheet1, A1, 10)f.SetCellValue(Sheet1, A2, 20)// 设置公式f.SetCellFormula(Sheet1, A3, SUM(A1:A2))f.SetActiveSheet(index)if err : f.SaveAs(formula_example.xlsx); err ! nil {println(err.Error())}
} 通过SetCellFormula方法指定工作表、单元格和公式内容即可在 Excel 文件中使用公式进行计算。
掌握excelize库的这些用法在 Go 语言中处理 Excel 文件将变得更加轻松高效。无论是简单的数据读写还是复杂的样式设置与公式应用都能满足实际开发需求。在实际应用中你还可以根据具体场景进一步探索和使用该库的更多功能。