go-excel

Excel数据读写的简易封装

参考方案:《使用 Golang 创建和读取 Excel 文件(字节跳动技术团队)》

https://juejin.cn/post/7117578224854368263

安装

go get -u github.com/melf-xyzh/go-excel

生成导入模板

生成一个默认的Excel导入模板

// 创建一个excelConfig(每个Excel文件需要一个)
exTemp := extemplate.ExcelConfig{}

使用自定义配置生成Excel导入版本

exTemp2 := extemplate.ExcelConfig{SheetName:        "车辆导入模板",      // 工作表名称FileName:         "车辆导入模板.xlsx", // 导出后的文件名DefaultColWidth:  40,            // 默认列宽DefaultRowHeight: 300,           // 默认行高(无效)SpecialColWidth: map[string]float64{ // 特殊列宽"B": 10,},SpecialRowHeight: map[int]float64{ // 特殊行高1: 50,},Style: map[string]exstyle.Style{ // 自定义单元格格式"A1,F3": exstyle.NewExStyle(exconst.DefaultFontFamily, exconst.DefaultFontSize, exconst.DefaultHorizontalAlign, exconst.DefaultVerticalAlign),"A1,F1": exstyle.NewExStyle("黑体", 50, "center", "center"),},MergeCell: map[string]string{ // 需要合并的单元格"A1": "D3",},
}

生成文件对象

// 获取Excel导入模板
file, err := exTemp.GetTemplate("信息导入模板", []string{"第1列", "第2列", "第3列", "第4列", "第5列", "第6列"})
if err != nil {panic(err)
}

通过结构体生成导入模板

// 定义结构体
type User struct {Id       string `json:"id"         ex:"column:ID;width:10;required;"`Name     string `json:"name"       ex:"column:姓名;width:30;required;"`NickName string `json:"nickName"   ex:"column:昵称;width:20;required;"`Phone    string `json:"phone"      ex:"column:手机号;width:15;required;"`Age      int    `json:"age"        ex:"column:年龄;width:10;required;"`Sex      string `json:"sex"        ex:"column:性别;width:10;required;select:男、女"`School // 允许存在匿名字段
}type School struct {SchoolName    string `ex:"column:学校;width:30;required;"`SchoolAddress string `ex:"column:学校地址;width:50;required;"`
}// 创建一个excelConfig(每个Excel文件需要一个)
exTemp3 := extemplate.ExcelConfig{SheetName:        "车辆导入模板",                                          // 工作表名称FileName:         "车辆导入模板" + exconst.DefaultExcelFileName + ".xlsx", // 导出后的文件名
}user := User{Id:       "001",Name:     "张三",NickName: "别人家的孩子",Phone:    "123456789",Age:      30,Sex:      "男",
}// 获取Excel导入模板
file, err := exTemp3.GetTemplateByStruct("信息导入模板", user)
if err != nil {panic(err)
}

生成阶梯模板

// 获取Excel导入模板
_, err := exTemp.GetLadderTemplate("乘法表", []string{"1", "2", "3", "4", "5","6", "7", "8", "9"})
if err != nil {panic(err)
}

保存Excel文件

// 保存Excel文件
err = exTemp.ExportFile("fs")
if err != nil {panic(err)
}

读取导入数据

通过结构体读入数据

user := User{}
// 通过结构体读取数据,并进行校验
// rows, err := extemplate.LoadExcelByStruct("./", "book1.xlsx", user, 2)
rows, err := extemplate.LoadExcelByStruct("./", "book1.xls", user, 2)
if err != nil {panic(err)
}
for _, row := range rows {fmt.Println(row)
}

常规方式读取数据

// rows, err = extemplate.LoadExcel("./", "book1.xls", 8)
rows, err = extemplate.LoadExcel("./", "book1.xlsx", 8)
if err != nil {panic(err)
}

读取阶梯模板

rows, err := extemplate.LoadLadderExcel("./","乘法表.xlsx",10,1,1)
if err != nil {panic(err)
}
for _, row := range rows {fmt.Println(row)
}

导出数据

待开发

exTag

标签名 说明
- 忽略该字段
ex:“-”
column 指定导出Excel时的列名
ex:“column:姓名;”
width 指定导出Excel时的列宽
ex:“width:30;”
required 必填
ex:“required;”
select 单选
ex:“select:男、女;”
multiSelect 多选
ex:“multiSelect:A1、A2、A3、B1、B2、C1、C2、C3、C4、C5、C6、D、E、F、M、N、P;”
unique 唯一
ex:“unique;”
len 导入Excel时的数据长度校验
ex:“len:2-5”(2-5位)
ex:“len:3”(固定为3位)
re 正则校验
ex:“re:1{1}[A-Z]{1}[A-Z0-9]{4,5}[A-Z0-9挂学警港澳]{1}$”
> 数值下限校验
ex:“>:0”
>= 数值下限校验
ex:“>=:0”
< 数值上限校验
ex:“<:100”
<= 数值上限校验
ex:“<=:100”

  1. 京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z ↩︎

go-excel文档相关推荐

  1. Python openpyxl 之 Excel 文档简单操作

    背景:生活中常常因日常工作,在记录统计方面需频繁处理较多 Excel 表格,这部分工作虽可由人工完成,但这样会显得有些繁琐且可能存在偏差,遂闲时查阅了是否有相关基于python处理Excel表格的学习 ...

  2. 用 Python 帮运营妹纸快速搞定 Excel 文档

    Microsoft Office 被广泛用于商务和运营分析中, 其中 Excel 尤其受欢迎.Excel 可以用于存储表格数据.创建报告.图形趋势等.在深入研究用 Python 处理 Excel 文档 ...

  3. 使用XML创建Excel文档

    使用XML创建Excel文档            原例子使用VB.Net写的,以下的用C#改写的代码 原文代码: http://www.gotdotnet.com/Community/UserSam ...

  4. 如何将Revit明细表导出为Excel文档

    Revit软件没有将明细表直接导出为Excel电子表格的功能,Revit只能将明细表导出为TXT格式,但是这种TXT文件用EXCEL处理软件打开然后另存为XLS格式即可,以Revit2013版自带的建 ...

  5. 初学python,分享一个简单的Excel文档合并工具

    初次接触python是在2009年秋,直到现在才有认真去学习了解. 正好最近在弄工作日志,需要重复合并多个excel文档,于是折腾了一个多星期,修修补补地用python写了这么一个小东西. 1.用于合 ...

  6. 用python处理excel-使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  7. Grails示例程序-导出Excel文档

    2019独角兽企业重金招聘Python工程师标准>>> 程序只有一个页面,点击下载链接,下载Excel文档,该文档有两个sheet,这两个sheet和里面的内容是使用JExcelAp ...

  8. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

  9. python的openpyxl库如何读取特定列_Excelize 2.3.2 发布,Go 语言 Excel 文档基础库,2021 年首个更新...

    Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准.可以使用它来读取.写入由 Microsoft Exc ...

  10. ARCGIS导入XY坐标的EXCEL文档,出现无法选择X和Y字段的问题

    近日用ARCGIS导入具有XY坐标的EXCEL文档时出现了无法选择X和Y字段的问题.像下图这样,在x field栏出现的字段应该是Excel文件中的x,但这个字段却没有出现. 最后发现是excel中数 ...

最新文章

  1. python的popen函数
  2. 【转】Word2007中不连续页码设置 多种页码设置
  3. 高并发简单解决方案————redis队列缓存+mysql 批量入库(ThinkPhP)
  4. 引用用户控件图片无法
  5. tomcat苹果版安装步骤_mac系统安装apache tomcat配置方法图文详解
  6. 图解 | 当我们在读写 Socket 时,我们究竟在读写什么?
  7. 程序员该做的事 - 每天、每周、每月
  8. linux下ip命令用法
  9. DPDK | 如何在用户空间使用大页内存hugepage
  10. Linux-进程基础
  11. leetcode刷题日记-供暖器
  12. 《剑指offer》面试题16——反转链表(C++)
  13. 什么软件画er图方便_图形图表设计器(Diagram Designer中文版)
  14. 如何(不开百度会员进行下载提速)合作双赢之路
  15. Proe3.0-5.0安装说明
  16. 杭州电子科技大学acm--2018
  17. 高效的敏捷测试第八课 静态测试工具和生成测试报告
  18. Python-Seleium模拟登陆163邮箱
  19. maven关闭检验_Maven常用命令:
  20. 展示数据使用:recyclerview,retrofit,greendao,butterknife,eventbus,fresco。实现效果图列表。MVP模式。

热门文章

  1. SyntaxError: Non-UTF-8 code starting with '\xb5' in file“问题解决办法
  2. 从头开始训练一个 NER 标注器
  3. 我裸辞全职接单第一个月的收入
  4. ceph监控管理平台calamari
  5. 从零开始实现3D软光栅渲染器 (1) 简介
  6. 剑指Offer——迅雷笔试题+知识点总结
  7. 2022-2027年中国知识产权代理行业发展前景及投资战略咨询报告
  8. vue.js:590 [Vue tip]: Event “removeitem“ is emitted in component <TodoItems> but the handler is regi
  9. 精简高效的CSS命名准则/方法
  10. 大疆FPGA/芯片开发工程师(B卷)笔试题(含详解)