Go导出和读取EXCEL

完整代码:https://github.com/tangfc/tealeg-xlsx 

tealeg-xlsx文档地址:https://godoc.org/github.com/tealeg/xlsx

1.导出数据到EXCEL

package dbops

import (
	"github.com/tealeg/xlsx"
	"go-test/excel/defs"
	"go-test/excel/comm"
	"github.com/labstack/gommon/log"
	"strconv"
)

var (
	file         *xlsx.File
	sheet        *xlsx.Sheet
	row          *xlsx.Row
	cell         *xlsx.Cell
	downloadData []*defs.MemberInfo
	err          error
)

// 下载Excel
func DownlaodExcel(filePath string, heads []string, data []*defs.MemberInfo) error {
	// 创建路径
	err = comm.CreateFilePath(filePath)
	if err != nil {
		log.Printf("%s", err.Error())
		return err
	}
	// 创建文件
	file = xlsx.NewFile()
	// 添加新工作表
	sheet, err = file.AddSheet("Sheet1")
	if err != nil {
		return err
	}
	// 向工作表中添加新行
	row = sheet.AddRow()
	// 头部写入
	for _, head := range heads {
		cell = row.AddCell()
		cell.Value = head
	}
	// 设置单元格样式
	sheet.SetColWidth(5, 5, 60) // 设置单元格宽度 0-A 1-B 2-C

	// 主体写入数据
	for _, val := range data {
		row = sheet.AddRow()
		row.AddCell().Value = strconv.Itoa(val.Id) // 该行单元格写入数据
		row.AddCell().Value = val.Nickname
		row.AddCell().Value = val.Username
		row.AddCell().Value = val.Realname
		row.AddCell().Value = val.Sex
		row.AddCell().Value = val.Signature
	}
	// 在提供的路径中将文件保存到xlsx文件
	err = file.Save(filePath)
	if err != nil {
		return err
	}
	return nil
}

2.读取EXCEL数据

package dbops

import (
	"github.com/tealeg/xlsx"
)

// 读取EXCEL
func ReadExcel(filePath string) (data map[string][][]string, err error) {
	data = make(map[string][][]string)
	xlFile, err := xlsx.OpenFile(filePath) // 打开文件
	if err != nil {
		return
	}
	for _, sheet := range xlFile.Sheets { // 循环打开工作簿
		var sheetInfo [][]string
		for _, row := range sheet.Rows { // 循环读取行
			var info []string
			for _, cell := range row.Cells { // 循环读取单元格
				info = append(info, cell.String())
			}
			sheetInfo = append(sheetInfo, info)
		}
		data[sheet.Name] = sheetInfo
	}
	return
}

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值