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
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章