在日常工作中,经常会有导出 excel 表格的功能,下面我们就简单的使用 Excelize 来导出 excel 文件。
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.15 或更高版本。
安装
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, }, } }
简单粗暴的贴代码。。。希望有点帮助
原文链接:https://www.cnblogs.com/jrzh/p/15303576.html