go中Excelize处理excel表实现带数据校验的文件导出

2023-12-05 0 421
目录
  • 1 Excelize介绍
  • 2 相关需求与实现
    • 2.1 数据的excel文件导出
    • 2.2 带数据校验的excel文件导出

1 Excelize介绍

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库。官方文档:https://xuri.me/excelize/zh-hans/

引入方法

go get \”github.com/xuri/excelize/v2\”

2 相关需求与实现

2.1 数据的excel文件导出

需求:入参是一个map,其键是每个sheet页的名字,其值是一个二维切片。在每个sheet页中依次写入切片中的数据。返回文件名和错误信息。

代码:

// 写入数据到export/*.xlsx
// datas: map[sheet]每个sheet页的数据
// return: 文件名, error
func WriteExcel(datas map[string][][]string) (string, error) {
file := excelize.NewFile()
for sheetName, data := range datas {
index, _ := file.NewSheet(sheetName)
for i, row := range data {
for j, val := range row {
// 列行数字索引转excel坐标索引
cellName, _ := excelize.CoordinatesToCellName(j+1, i+1)
//fmt.Println(\”cellName:\”, cellName)
// 设置,写入
file.SetCellValue(sheetName, cellName, val)
}
}
// 创建表格
file.SetActiveSheet(index)
}
filename := \”aaa\” + \”.xlsx\”
_, err := os.ReadDir(\”aaa/\”)
if err != nil {
// 不存在就创建
err = os.MkdirAll(\”aaa/\”, fs.ModePerm)
if err != nil {
fmt.Println(err)
}
}
// 删除默认工作表
file.DeleteSheet(\”Sheet1\”)
err = file.SaveAs(\”aaa/\” + filename)
if err != nil {
return \”\”, err
}
return filename, nil
}
func main() {
datas := make(map[string][][]string)
datas[\”xxx\”] = [][]string{{\”A1\”, \”B1\”, \”C1\”, \”d1\”, \”E1\”, \”G1\”, \”H1\”, \”I1\”}, {\”A2\”, \”B2\”, \”C2\”}, {\”A3\”, \”B3\”, \”C3\”}}
datas[\”yyy\”] = [][]string{{\”X1\”, \”Y1\”, \”Z1\”}, {\”X2\”, \”Y2\”, \”Z2\”}, {\”X3\”, \”Y3\”, \”Z3\”}}
fileName, err := WriteExcel(datas)
if err != nil {
fmt.Println(\”Write excel error: \”, err)
return
}
fmt.Println(\”Write excel success, file name is: \”, fileName)

输出文件:

go中Excelize处理excel表实现带数据校验的文件导出

go中Excelize处理excel表实现带数据校验的文件导出

2.2 带数据校验的excel文件导出

需求:入参是一个map,其键是每个sheet页的名字,其值是一个二维切片。在每个sheet页中依次写入切片中的数据。返回文件名和错误信息。数据校验:A列只能输入a,aa,aaa,aaaa;B列只能输入b,bb;C列只能输入c,cc,ccc。

代码:

func WriteExcelValidation(datas map[string][][]string, validations map[string][]string) (string, error) {
file := excelize.NewFile()
for sheetName, data := range datas {
// 创建sheet
index, _ := file.NewSheet(sheetName)
// 有效性校验
for col, validation := range validations {
dv := excelize.NewDataValidation(true)
dv.SetSqref(col + \”2:\” + col + \”1048576\”)
err := dv.SetDropList(validation)
if err != nil {
return \”\”, err
}
file.AddDataValidation(sheetName, dv)
}
for i, row := range data {
for j, val := range row {
// 列行数字索引转excel坐标索引
cellName, _ := excelize.CoordinatesToCellName(j+1, i+1)
// 设置,写入
file.SetCellValue(sheetName, cellName, val)
}
}
// 创建表格
file.SetActiveSheet(index)
}
filename := \”bbb\” + \”.xlsx\”
// 创建目录
_, err := os.ReadDir(\”aaa/\”)
if err != nil {
// 不存在就创建
err = os.MkdirAll(\”aaa/\”, fs.ModePerm)
if err != nil {
return \”\”, err
}
}
file.DeleteSheet(\”Sheet1\”)
err = file.SaveAs(\”aaa/\” + filename)
if err != nil {
return \”\”, err
}
return filename, nil
}
func main() {
validations := make(map[string][]string)
validations[\”A\”] = []string{\”a\”, \”aa\”, \”aaa\”, \”aaaa\”}
validations[\”B\”] = []string{\”b\”, \”bb\”}
validations[\”E\”] = []string{\”c\”, \”cc\”, \”ccc\”}
datas := make(map[string][][]string)
datas[\”xxx\”] = [][]string{{\”A1\”, \”B1\”, \”C1\”, \”d1\”, \”E1\”, \”G1\”, \”H1\”, \”I1\”}, {\”A2\”, \”B2\”, \”C2\”}, {\”A3\”, \”B3\”, \”C3\”}}
datas[\”yyy\”] = [][]string{{\”X1\”, \”Y1\”, \”Z1\”}, {\”X2\”, \”Y2\”, \”Z2\”}, {\”X3\”, \”Y3\”, \”Z3\”}}
fileName, err := WriteExcelValidation(datas, validations)
if err != nil {
fmt.Println(\”Write excel error: \”, err)
return
}
fmt.Println(\”Write excel success, file name is: \”, fileName)
}

输出文件:

go中Excelize处理excel表实现带数据校验的文件导出

到此这篇关于go中Excelize处理excel表实现带数据校验的文件导出的文章就介绍到这了,更多相关go Excelize excel导出内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • golang使用excelize库操作excel文件的方法详解
  • Go语言操作Excel利器之excelize类库详解
  • 如何使用 Go 和 Excelize 构建电子表格
  • GoExcelizeAPI源码阅读GetPageLayout及SetPageMargins
  • GoExcelizeAPI源码解读GetSheetViewOptions与SetPageLayout
  • Go Excelize API源码阅读SetSheetViewOptions示例解析
  • Go Excelize API源码解析GetSheetFormatPr使用示例
  • Go Excelize API源码阅读Close及NewSheet方法示例解析

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Golang go中Excelize处理excel表实现带数据校验的文件导出 https://www.u-9.cn/jiaoben/golang/101729.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务