Go 单表头结构体导入导出

这篇具有很好参考价值的文章主要介绍了Go 单表头结构体导入导出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Go 单表头结构体导入导出

首先感谢 github.com/xuri/excelize/v2 基础库对excel表格的支持,本文在此基础上进行功能的api扩展方便,(web/其他)有结构体导出与导入需求的封装优化,当前版本 v0.0.2

基本用法

安装

go get github.com/heliangrui/excel

当前版本v0.0.2,也可指定版本安装,以防版本变化

go get github.com/heliangrui/excel@0.0.2

结构体标签

  • excelName 列名
  • excelIndex 列序号
  • toExcelFormat 列转excel函数名称
  • toDataFormat excel转data函数名称
  • excelColWidth 列宽度

导出示例

  1. 结构体定义
type NameStruct struct{
   Name string `excelName:"姓名" excelIndex:"1" excelColWidth:"30"`
   Age string `excelName:"年龄" excelIndex:"3"`
   Sex int `excelName:"性别" excelIndex:"1" toExcelFormat:"ToExcelSexFormat"`
}

func (n NameStruct) ToExcelSexFormat() string{
    if n.Sex == 0 {
      return "女"
    }
   return "男"
}
  1. 输出
func main() {
    //创建数据源
   data := createData()
   //创建导出对象
   export := excel.NewExcelExport("test", NameStruct{})
   //销毁对象
   defer export.Close()
   //导出
   err = export.ExportSmallExcelByStruct(data).WriteInFileName("test.xlsx").Error()
   if err != nil {
      fmt.Println("生成失败", err.Error())
   }
}

func createData() []NameStruct {
   var names []NameStruct
   for i := 0; i < 10; i++ {
      names = append(names, NameStruct{name: "hlr" + strconv.Itoa(i), age: strconv.Itoa(i),Sex: i})
   }
   return names
}

  1. 也可指定输出模拟分页
func main() {
    //创建数据源
   data := createData()
   //创建导出对象
   export := excel.NewExcelExport("test", NameStruct{})
   //销毁对象
   defer export.Close()
   //导出 模拟分页
    for i := 0; i < 10; i++ {
       export.ExportData(result, i*10)
    }
   err = export.WriteInFileName("test.xlsx").Error()
   if err != nil {
      fmt.Println("生成失败", err.Error())
   }
}

导入实例

  1. 导入数据到结构体
func main() {
    //接受数据
    var result []NameStruct
    //创建导入对象
   importFile := excel.NewExcelImportFile("111.xlsx", NameStruct{})
   //对象销毁
   defer importFile.Close()
   
   //数据填充 
   err := importFile.ImportDataToStruct(&result).Error()
    //数据显示
   if err != nil {
      fmt.Println("生成失败", err.Error())
   } else {
      marshal, _ := json.Marshal(result)
      fmt.Println(string(marshal))
   }
}
  1. 逐行获取数据读取
func main() {
    //接受数据
    var result []NameStruct
    //创建导入对象
   importFile := excel.NewExcelImportFile("111.xlsx", NameStruct{})
   //对象销毁
   defer importFile.Close()
   // 方式二 逐行遍历
   err := importFile.ImportRead(func(row NameStruct) {
      fmt.Println(row.Name)
   }).Error()

}

定义表头样式

  1. 代码示例
export := excel.NewExcelExport("test", NameStruct{})
//获取默认表头样式
header := excel.CreateDefaultHeader()
//编辑默认header
// .......

export.SetHeadStyle(header)

  1. 默认样式对象
{
   Border: []excelize.Border{
      {Type: "left", Color: "050505", Style: 1},
      {Type: "top", Color: "050505", Style: 1},
      {Type: "bottom", Color: "050505", Style: 1},
      {Type: "right", Color: "050505", Style: 1},
   },
   Fill: excelize.Fill{Type: "gradient", Color: []string{"#a6a6a6", "#a6a6a6"}, Shading: 1},
   Font: nil,
   Alignment: &excelize.Alignment{
      Horizontal:      "center",
      Indent:          1,
      JustifyLastLine: true,
      ReadingOrder:    0,
      RelativeIndent:  1,
      ShrinkToFit:     false,
      TextRotation:    0,
      Vertical:        "",
      WrapText:        false,
   },
   Protection:    nil,
   NumFmt:        0,
   DecimalPlaces: 0,
   CustomNumFmt:  nil,
   Lang:          "",
   NegRed:        false,
}

感谢阅读

后续有时间,将支持多表头文章来源地址https://www.toymoban.com/news/detail-417263.html

到了这里,关于Go 单表头结构体导入导出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Go】excelize库实现excel导入导出封装(三),基于excel模板导出excel

    大家好,这里是符华~ 关于excelize库实现excel导入导出封装,我已经写了两篇了,我想要的功能基本已经实现了,现在还差一个模板导出,这篇文章就来讲讲如何实现用模板导出excel。 前两篇: 【Go】excelize库实现excel导入导出封装(一),自定义导出样式、隔行背景色、自适应

    2024年01月25日
    浏览(42)
  • 【PowerDesigner】导入sql为表结构并导出表结构为word

    左上角file - Reverse Engineer - Database 第一步:新增导出选择文件 Report - Reports 第二步:在上述步骤点击OK后会跳到新增的页面中 选择Report - Report Properties ①取消自增序号 ②取消页面标题 ③设置导出模板 第三步:对导出的表格样式做处理 仅保留一个标题即可 第四步:右键List

    2024年01月23日
    浏览(25)
  • EasyExcel动态表头导出(支持多级表头)

    在很多业务场景中,都会应用到动态表头的导出,也会涉及到多级表头的导出,如下图所示 通过EasyExcel,我们可以快速实现这一需求,具体代码如下 maven依赖 DynamicHeader.java CustomTitleWriteHandler.java CellStyle.java DynamicExcelUtils.java

    2024年02月08日
    浏览(62)
  • hutool 导出复杂表头excel

    假如已这样的表头导出数据  1.把包含表头的excel添加到项目资源目录  2.编写代码读取表头所在sheet,并且加入需导出的数据

    2024年02月13日
    浏览(33)
  • EasyExcel解析动态表头及导出

    前言 excel文件导入及导出,是日常开发中经常遇到的需求。本次笔者以EasyExcel为例,针对在项目中遇到的 动态表头解析及导出 的场景,详细介绍具体的代码实现过程。 参考地址 https://github.com/alibaba/easyexcel 前端下载 模板下载 excel文件导入功能,常常需要进行模板下载,在

    2023年04月09日
    浏览(28)
  • poi带表头多sheet导出

    导出工具类 导出实体主表类 导出sheet1表 导出sheet2表 导出 导出结果

    2024年02月11日
    浏览(30)
  • 使用easyexcel 导出多级表头demo

    先看效果: 1、引入maven依赖 2、实体类 3、web导出 controller 4、在拦截器中对表头的样式进行自定义的覆盖

    2024年01月18日
    浏览(31)
  • EasyExcel复杂表头数据导入

    参考文章:EasyExcel动态复杂表头导出方法

    2024年02月06日
    浏览(33)
  • Java 利用Easyexcel动态导出表头列

    其中 fieldName 为要导出的字段名称 也就是 数据对象 中与之对应的字段名称 headName 为与字段对应的表头(我这里默认用的就是导出表头集合中字段排序就是导出的表头排序 如有需要,可以自己定义导出表头顺序) 导出util类,直接上代码 其中  CellStyle() 是设置的默认样式 

    2024年02月11日
    浏览(32)
  • POI实现Excel多行复杂表头导出

    1. 定义表头标题 2. 编写导出/生成Excel工具类 3. 测试 测试结果

    2024年01月19日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包