您的当前位置:首页正文

Golang导出excel文件的简单操作

2020-11-28 来源:榕意旅游网
Golang导出excel⽂件的简单操作

在⽇常⼯作中,经常会有导出 excel 表格的功能,下⾯我们就简单的使⽤ Excelize 来导出 excel ⽂件。

Excelize 是 Go 语⾔编写的⽤于操作 Office Excel ⽂档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使⽤它来读取、写⼊由 Microsoft Excel™ 2007 及以上版本创建的电⼦表格⽂档。⽀持 XLSX / XLSM / XLTM / XLTX 等多种⽂档格式,⾼度兼容带有样式、图⽚(表)、透视表、切⽚器等复杂组件的⽂档,并提供流式读写 API,⽤于处理包含⼤规模数据的⼯作簿。可应⽤于各类报表平台、云计算、边缘计算等系统。使⽤本类库要求使⽤的 Go 语⾔为 1.15 或更⾼版本。 github:

⽂档:

安装

go get github.com/xuri/excelize

// 如果使⽤ Go Modules 管理软件包,可以⽤下⾯的命令来安装最新版本go get github.com/xuri/excelize/v2  

创建 Excel ⽂档

f := excelize.NewFile()// 设置单元格的值// 这⾥设置表头

f.SetCellValue(\"Sheet1\", \"A1\", \"序号\")f.SetCellValue(\"Sheet1\", \"B1\", \"名称\")line := 1

fruits := getFruits()// 循环写⼊数据

for _, v := range fruits { line++

f.SetCellValue(\"Sheet1\", fmt.Sprintf(\"A%d\", line), v.ID) f.SetCellValue(\"Sheet1\", fmt.Sprintf(\"B%d\", line), v.Name)}

// 保存⽂件

if err := f.SaveAs(\"fruits.xlsx\"); err != nil { fmt.Println(err)}

导出的⽂件内容是:

设置⼯作簿的列宽和⾏⾼

// 设置列宽

f.SetColWidth(\"Sheet1\", \"A\", \"C\", 20)// 设置表头⾏⾼

f.SetRowHeight(\"Sheet1\", 1, 30)

这样并不好看,接下来继续设置单元格样式

设置单元格样式

1.设置表头字体加粗、⽂字⽔平并且垂直居中、字体、颜⾊。2.设置⾏的字体样式默认是⽔平垂直居中,但是单价列的值必须靠左

下⾯是实现代码

// 设置表头样式

headStyleID, _ := f.NewStyle(`{ \"font\":{

\"color\":\"#333333\", \"bold\":true, \"size\":16,

\"family\":\"arial\" },

\"alignment\":{

\"vertical\":\"center\", \"horizontal\":\"center\" }}`)

// 设置⾏样式

rowStyleID, _ := f.NewStyle(`{ \"font\":{

\"color\":\"#666666\", \"size\":13,

\"family\":\"arial\" },

\"alignment\":{

\"vertical\":\"center\", \"horizontal\":\"center\" }}`)

f.SetCellStyle(\"Sheet1\", \"A1\", \"C1\", headStyleID)textLeftStyleID, _ := f.NewStyle(`{ \"alignment\":{

\"horizontal\":\"left\" }}`)

for _, v := range fruits { line++

f.SetCellValue(\"Sheet1\", fmt.Sprintf(\"A%d\", line), v.ID) f.SetCellValue(\"Sheet1\", fmt.Sprintf(\"B%d\", line), v.Name) f.SetCellValue(\"Sheet1\", fmt.Sprintf(\"C%d\", line), v.Price)

// 设置⾏样式

f.SetCellStyle(\"Sheet1\", fmt.Sprintf(\"A%d\", line), fmt.Sprintf(\"C%d\", line), rowStyleID) f.SetCellStyle(\"Sheet1\", fmt.Sprintf(\"C%d\", line), fmt.Sprintf(\"C%d\", line), textLeftStyleID)}结果:

表格数据源

type fruit struct { ID uint

Name string Price float64}

func getFruits() []*fruit { return []*fruit{ &fruit{ ID: 1,

Name: \"苹果\", Price: 8, },

&fruit{ ID: 2,

Name: \"雪梨\", Price: 5, },

&fruit{ ID: 3,

Name: \"⾹蕉\", Price: 3, }, }}

简单粗暴的贴代码。。。希望有点帮助

因篇幅问题不能全部显示,请点此查看更多更全内容