golang 输出excel
发布时间:2024-12-04 01:49:30
Golang实现Excel读写操作
在开发中,我们常常需要将数据导出到Excel中进行展示或者进行数据分析。Golang作为一门强大的后端开发语言,在处理Excel文件方面也有着很好的支持。本文将向大家介绍如何使用Golang来实现Excel的输出功能。
Golang的Excel支持库
Golang有着丰富的第三方库来处理Excel文件,其中比较受欢迎的是“github.com/360EntSecGroup-Skylar/excelize”库。该库可以用于创建、读取和编辑Excel文件。通过使用该库,我们可以方便地生成Excel文件并填充数据。
安装Excelize库
要使用excelize库,我们首先需要进行安装。可以使用以下命令来安装:
```
go get github.com/360EntSecGroup-Skylar/excelize/v2
```
创建Excel文件
首先,我们需要导入excelize包,并创建一个新的Excel文件。代码示例如下:
```go
import (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize/v2"
)
func main() {
file := excelize.NewFile()
sheet := "Sheet1"
// 设置单元格内容
file.SetCellValue(sheet, "A1", "姓名")
file.SetCellValue(sheet, "B1", "年龄")
file.SetCellValue(sheet, "C1", "性别")
// 保存文件
if err := file.SaveAs("output.xlsx"); err != nil {
fmt.Println(err)
return
}
fmt.Println("Excel文件已生成")
}
```
在代码中,我们首先通过`excelize.NewFile()`函数创建了一个新的Excel文件,并指定了默认的工作表名称。然后,我们使用`file.SetCellValue()`函数设置了单元格的内容,行号和列号从1开始。最后,我们通过`file.SaveAs()`函数将文件保存为output.xlsx。
填充Excel数据
要向Excel中填充数据,我们可以使用同样的`SetCellValue()`函数。代码示例如下:
```go
func main() {
file := excelize.NewFile()
sheet := "Sheet1"
// 设置单元格内容
file.SetCellValue(sheet, "A1", "姓名")
file.SetCellValue(sheet, "B1", "年龄")
file.SetCellValue(sheet, "C1", "性别")
// 填充数据
data := []map[string]interface{}{
{"name": "张三", "age": 20, "gender": "男"},
{"name": "李四", "age": 22, "gender": "女"},
{"name": "王五", "age": 25, "gender": "男"},
}
for i, item := range data {
row := i + 2 // 跳过表头
file.SetCellValue(sheet, fmt.Sprintf("A%d", row), item["name"])
file.SetCellValue(sheet, fmt.Sprintf("B%d", row), item["age"])
file.SetCellValue(sheet, fmt.Sprintf("C%d", row), item["gender"])
}
// 保存文件
if err := file.SaveAs("output.xlsx"); err != nil {
fmt.Println(err)
return
}
fmt.Println("Excel文件已生成")
}
```
在上述代码中,我们使用了一个名为`data`的切片来存储要填充的数据。然后,我们使用循环遍历切片,并通过`SetCellValue()`函数将数据填充到相应的单元格中。注意,行号需要从2开始,以跳过表头。
自定义格式
excelize库还支持自定义单元格的样式、字体、背景颜色等。例如,我们可以设置表头为粗体,并给表格添加背景颜色,使其更具可读性。代码示例如下:
```go
func main() {
file := excelize.NewFile()
sheet := "Sheet1"
// 设置单元格内容
file.SetCellValue(sheet, "A1", "姓名")
file.SetCellValue(sheet, "B1", "年龄")
file.SetCellValue(sheet, "C1", "性别")
// 设置表头样式
style, _ := file.NewStyle(`{
"alignment":{"horizontal":"center"},
"font":{"bold":true},
"fill":{"type":"pattern","color":["#4286f4"],"pattern":1}
}`)
file.SetCellStyle(sheet, "A1", "C1", style)
// 填充数据
data := []map[string]interface{}{
{"name": "张三", "age": 20, "gender": "男"},
{"name": "李四", "age": 22, "gender": "女"},
{"name": "王五", "age": 25, "gender": "男"},
}
for i, item := range data {
row := i + 2 // 跳过表头
file.SetCellValue(sheet, fmt.Sprintf("A%d", row), item["name"])
file.SetCellValue(sheet, fmt.Sprintf("B%d", row), item["age"])
file.SetCellValue(sheet, fmt.Sprintf("C%d", row), item["gender"])
}
// 保存文件
if err := file.SaveAs("output.xlsx"); err != nil {
fmt.Println(err)
return
}
fmt.Println("Excel文件已生成")
}
```
在上述代码中,我们使用了`NewStyle()`函数创建了一个自定义样式,并通过`SetCellStyle()`函数将样式应用到表头单元格(从A1到C1)。样式中定义了字体为粗体,水平居中对齐,背景颜色为蓝色。
总结
通过使用Golang的excelize库,我们可以很方便地实现Excel文件的输出。我们可以创建Excel文件、填充数据,并对单元格进行自定义样式设置。这极大地提高了开发效率,使得数据展示和分析更加便捷。
本文介绍了如何使用excelize库来创建Excel文件和填充数据。同时,我们还学习了如何设置单元格的样式和自定义格式。希望本文对正在学习或使用Golang的开发者对Excel输出有所帮助。
相关推荐