当前位置: 首页 > news >正文

Golang 创建 Excel 文件

经常会遇到需要导出数据报表的需求,除了可以通过 encoding/csv 导出 CSV 以外,还可以使用
https://github.com/qax-os/excelize 导出 xlsx 等格式的 excel,下面封装了一个方法,支持多 sheet 的 excel 数据生成,导出按需在接口实现层添加 f.SaveAs("xxx.xlsx") 即可

package excelimport ("fmt""github.com/xuri/excelize/v2"
)type SheetData struct {SheetName stringHeaders   []stringRows      [][]interface{}
}// GenerateExcelBySheets 生成 excel 表格
func GenerateExcelBySheets(sheets []SheetData) (*excelize.File, error) {f := excelize.NewFile()for _, sheet := range sheets {if _, err := f.NewSheet(sheet.SheetName); err != nil {return nil, err}for i, header := range sheet.Headers {if err := f.SetCellValue(sheet.SheetName, GetCellName(i, 1), header); err != nil {return nil, err}}baseIndex := 2if len(sheet.Headers) == 0 {baseIndex = 1}for i, row := range sheet.Rows {for j, val := range row {if err := f.SetCellValue(sheet.SheetName, GetCellName(j, baseIndex+i), val); err != nil {return nil, err}}}}if len(sheets) > 0 {f.SetActiveSheet(0)}return f, nil
}// GetColumnName 获取列名 A-Z, AA-ZZ, AAA-ZZZ
func GetColumnName(col int) string {if col < 26 {return string(rune('A' + col))}return GetColumnName(col/26-1) + GetColumnName(col%26)
}// GetCellName 获取单元格名称 A1, B2, AA1, AB1
func GetCellName(col, row int) string {return fmt.Sprintf("%s%d", GetColumnName(col), row)
}
http://www.lryc.cn/news/402447.html

相关文章:

  • 探索GitHub上的两个革命性开源项目
  • SpringBoot框架学习笔记(三):Lombok 和 Spring Initailizr
  • 【ASP.NET网站传值问题】“object”不包含“GetEnumerator”的公共定义,因此 foreach 语句不能作用于“object”类型的变量等
  • Stateflow中的状态转换表
  • 结合Redis解决接口幂等性问题
  • 2024算力基础设施安全架构设计与思考(免费下载)
  • ExoPlayer架构详解与源码分析(15)——Renderer
  • 网络安全-等级保护制度介绍
  • 【介绍下大数据组件之Storm】
  • React Hook 总结(React 萌新升级打怪中...)
  • Typora 1.5.8 版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取
  • mac docker no space left on device
  • 单片机主控的基本电路
  • 【19】读感 - 架构整洁之道(一)
  • 多层全连接神经网络(三)---分类问题
  • 签名优化:请求数据类型不是`application/json`,将只对随机数进行签名计算,例如文件上传接口。
  • PostgreSQL的Json数据类型如何使用
  • SpringData JPA Mongodb 查询部分字段
  • NC65 设置下拉列表框值
  • 小阿轩yx-高性能内存对象缓存
  • 华中师范大学学报人文社会科学版
  • CI/CD的node.js编译报错npm ERR! network request to https://registry.npmjs.org/
  • 用ssh tunnel的方式设置 AWS DocumentDB 公网访问
  • 基于电鸿(电力鸿蒙)的边缘计算网关,支持定制
  • WPF之URI的使用
  • Web开发:ASP.NET CORE前后端交互之AJAX(含基础Demo)
  • 经典神经网络(14)T5模型原理详解及其微调(文本摘要)
  • C语言结构体字节对齐技术详解
  • Linux编辑器——vim的使用
  • Java案例斗地主游戏