golang 将数据导入excel
三方包"github.com/tealeg/xlsx"将数据导入excel
定义表头字段和导入结构体
type Student struct {Name stringAge intPhone stringGender stringMail string
}// HeaderColumn 表头字段定义
type HeaderColumn struct {Field string // 字段,数据映射到的数据字段名Title string // 标题,表格中的列名称
}
设置表头样式
// SetHeader 写模式下,设置字段表头和字段顺序
// 参数 header 为表头和字段映射关系,如:HeaderColumn{Field:"title", Title: "标题", Requre: true}
// 参数 width 为表头每列的宽度,单位 CM:map[string]float64{"title": 0.8}
func SetHeader(sheet *xlsx.Sheet, header []*HeaderColumn, width map[string]float64) (*xlsx.Sheet, error) {if len(header) == 0 {return nil, errors.New("Excel.SetHeader 错误: 表头不能为空")}// 表头样式style := xlsx.NewStyle()font := xlsx.DefaultFont()font.Bold = truealignment := xlsx.DefaultAlignment()alignment.Vertical = "center"style.Font = *fontstyle.Alignment = *alignmentstyle.ApplyFont = truestyle.ApplyAlignment = true// 设置表头字段row := sheet.AddRow()row.SetHeightCM(1.0)row_w := make([]string, 0)for _, column := range header {row_w = append(row_w, column.Field)cell := row.AddCell()cell.Value = column.Title cell.SetStyle(style) //设置单元样式}// 表格列,宽度if len(row_w) > 0 {for k, v := range row_w {if width[v] > 0.0 {sheet.SetColWidth(k, k, width[v]*10)}}}return sheet, nil
}
准备数据
func getStudents() []Student {students := make([]Student, 0)for i := 0; i < 10; i++ {stu := Student{}stu.Name = "love" + strconv.Itoa(i+1)stu.Mail = stu.Name + "@studygolang.com"stu.Phone = "10086" + strconv.Itoa(i)stu.Age = 18 + iif i%2 == 0 {stu.Gender = "女"} else {stu.Gender = "男"}students = append(students, stu)}return students
}
开始导入
func Export() {file := xlsx.NewFile() // NewWriter 创建一个Excel写操作实例sheet, err := file.AddSheet("student_list") //表实例if err != nil {fmt.Printf(err.Error())}stus := getStudents() //add dataheaders := []*HeaderColumn{{Field: "Name", Title: "姓名"},{Field: "Age", Title: "年龄"},{Field: "Phone", Title: "电话"},{Field: "Gender", Title: "性别"},{Field: "Mail", Title: "邮箱"},}style := map[string]float64{"Name": 2.0,"Age": 2.0,"Phone": 2.0,"Gender": 2.0,"Mail": 2.0,}sheet, _ = SetHeader(sheet, headers, style)for _, stu := range stus {data := make(map[string]string)data["Name"] = stu.Namedata["Age"] = strconv.Itoa(stu.Age)data["Phone"] = stu.Phonedata["Gender"] = stu.Genderdata["Mail"] = stu.Mailrow := sheet.AddRow()row.SetHeightCM(0.8)for _, field := range headers {row.AddCell().Value = data[field.Field]}}outFile := "/home/chengxiaofei/project/src/test/out_student.xlsx"err = file.Save(outFile)if err != nil {fmt.Printf(err.Error())}fmt.Println("\n\nexport success")
}
导入成功
golang 将数据导入excel相关推荐
- python导入excel数据-如何把python中的数据导入excel
python将数据导入excel的方法:1.在python官网下载xlrd第三方库:2.利用xlrd中的open_workbook函数读入excel文件,即可在python中导入excel数据. 一. ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!...
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- openrowset excel 科学计数_txt的数据导入excel中身份证或银行卡显示成科学计数如何解决...
用excel自带的"数据"->"自文本"将txt的数据导入excel中,如果数字特别长比如身份证或者银行卡会显示成科学计数法,如下: 借助sqlcel我们 ...
- python excel模板 生成excel表格_python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图...
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 #coding=utf-8 from openpyxl importload_workbookfro ...
- PB 数据窗口数据导入Excel, 如果存在则追加,不存在则创建。
PB 数据窗口数据导入Excel, 如果存在则追加,不存在则创建. [转] OLEOBJECT ExcelServer,Excelbooks long ll_count ,ll_loop,ll_i,l ...
- matlab数组 xp,windowsxp系统将matlab数据导入excel的方法
matlab是一款非常强大的商业数学软件,不仅能够读取Excel表格中的数据,还支持将matlab中的变量导入到Excel表格中.接下来,系统城小编就为大家分享windowsxp系统将matlab数据 ...
- java txt数据导入excel,java导入excle文件《如何用java 将txt数据导入excel》
如何用java 将txt数据导入excel 代码如下: import java.io.*; import jxl.*; import jxl.write.*; public class CreateX ...
- txt的数据导入excel中身份证或银行卡显示成科学计数如何解决
用excel自带的"数据"->"自文本"将txt的数据导入excel中,如果数字特别长比如身份证或者银行卡会显示成科学计数法,如下: 借助sqlcel我们 ...
- 网页数据导入excel的问题
网页数据导入excel共分三步: 第一步:建立EXCEL.JS文件 ====文件的代码========= var idTmr = ""; function copy(tabi ...
- 网页数据导入excel问题介绍
转自:微点阅读 https://www.weidianyuedu.com 网页数据导入excel共分三步: 第一步:建立EXCEL.JS文件 ====文件的代码========= var idTm ...
最新文章
- 关于ListView中adapter调用notifyDataSetChanged无效的原因
- 框架:SpringMVC中Interceptor拦截器的两种实现
- Linux安装nginx进行make的报错 原因pcre及其源代码路径
- 软件人员kpi制定模板_软件科技公司绩效考核办法模板
- 让员工、用户粉丝化,从选好社区软件开始
- 【转】Linux删除文件未释放空间问题处理
- 冒险岛PHP源码,岁月最新源码 岁月冒险岛端源码。。部分源码需要的拿走了、不谢!!! 联合开发网 - pudn.com...
- 浅谈RS-485协议
- 服务器30hz显示器240hz,显示器刷新率上不去,这锅到底让谁背
- Javassist学习总结1
- Ubuntu安装桌面环境以及远程桌面连接
- [BZOJ4152][AMPPZ2014]The Captain题解
- android 画圆形 bitmap,在android中画圆形图片的几种办法
- Linux下sqlite3移植与编程
- codeup刷题 2.6小节——C/C++快速入门->函数 ——《算法笔记》(胡凡)
- 【操作系统】操作系统的功能管理与分类
- php管理varnish,php实现监控varnish缓存服务器的状态,php监控varnish缓存_PHP教程
- LayaAir之制作迷宫
- 音频接口简介(PDM/PCM/IIS/SLIMBUS)
- ESXi服务器CPU睿频检测
热门文章
- STM32---FLASH闪存
- ipad上的html编辑器,iPad Pro变生产力工具,你还缺这个轻量级浏览器端代码编辑器...
- 数据结构名词解释以及简答
- 2023年陕西师范大学宗教学考研上岸前辈备考经验指导
- java 转换成大写_java实现将数字转换成人民币大写
- 安徽财贸职业学院计算机信息管理怎么样,让别人看看安徽财贸职业学院计算机系汪永涛辅导员如何对待我的!!...
- 打印没反应/打印耗时长/not accessible
- 单细胞文章解读——用单细胞RNA测序技术分析与肿瘤转移相关的细胞间通讯
- 802.11-2020协议学习__$12-Security__$12.5.2-TKIP__2
- Unity【Live Capture】- 关于人脸捕捉的解决方案(一)