go-excel文档
生活随笔
收集整理的這篇文章主要介紹了
go-excel文档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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” |
京津滬渝冀豫云遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陜吉閩貴粵青藏川寧瓊使領A-Z ??
總結
以上是生活随笔為你收集整理的go-excel文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抖音矩阵系统,抖音矩阵系统源码定制 te
- 下一篇: 2021-09-13 多组EQ切换