package
1.2.6
Repository: https://github.com/morehao/go-tools.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

go-excel

简介

go-excel 是基于 excelize 的简单封装,支持通过结构体便捷地读写 Excel 文件。

无论是读取 Excel 还是写入 Excel,都需要定义一个结构体,结构体的字段通过 tag(即 ex)来指定 Excel 的相关信息。

特性

  • 通过结构体标签定义Excel列映射关系
  • 支持读取和写入Excel文件
  • 支持基于validator的数据验证

安装

go get github.com/morehao/go-excel

使用

读取Excel

读取Excel的简单示例:

package main

import (
	"fmt"
	"github.com/morehao/go-excel"
	"github.com/xuri/excelize/v2"
)

type DataItem struct {
	SerialNumber int64  `ex:"head:序号" validate:"min=10,max=100"`
	UserName     string `ex:"head:姓名"`
	Age          int64  `ex:"head:年龄"`
}

func main() {
	f, openErr := excelize.OpenFile("test.xlsx")
	if openErr != nil {
		fmt.Println("open file error: ", openErr)
		return
	}
	defer func() {
		if err := f.Close(); err != nil {
			fmt.Println(err)
		}
	}()

	reader := excel.NewReader(f, &excel.ReaderOption{
		SheetNumber:  0,
		HeadRow:      0,
		DataStartRow: 1,
	})
	var dataList []DataItem
	validateErrMap, readerErr := reader.Read(&dataList)
	if readerErr != nil {
		fmt.Println("read error: ", readerErr)
		return
	}
	if len(validateErrMap) > 0 {
		fmt.Println("validate error: ", validateErrMap)
		return
	}
	for _, item := range dataList {
		fmt.Println(item)
	}
}

写入Excel

生成Excel的简单示例:

package main

import (
	"fmt"
	"github.com/morehao/go-excel"
)

type DataItem struct {
	SerialNumber int64  `ex:"head:序号" validate:"min=10,max=100"`
	UserName     string `ex:"head:姓名"`
	Age          int64  `ex:"head:年龄"`
}

func main() {
	var dataList []DataItem
	dataList = append(dataList, DataItem{
		SerialNumber: 1,
		UserName:     "张三",
		Age:          18,
	})
	excelWriter := excel.NewWrite(&excel.WriteOption{
		SheetName: "Sheet1",
		HeadRow:   0,
	})
	if err := excelWriter.SaveAs(dataList, "write.xlsx"); err != nil {
		fmt.Println("write error: ", err)
	}
}