83 lines
1.8 KiB
Go
83 lines
1.8 KiB
Go
// Package excel...
|
|
//
|
|
// Description : excel...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2021-11-19 12:25 下午
|
|
package excel
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/xuri/excelize/v2"
|
|
)
|
|
|
|
// NewExcel 获取excel实例
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 12:28 下午 2021/11/19
|
|
func NewExcel() *Create {
|
|
return &Create{
|
|
fileHandler: excelize.NewFile(),
|
|
}
|
|
}
|
|
|
|
// Create 创建excel
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 12:27 下午 2021/11/19
|
|
type Create struct {
|
|
// fileHandler excel文件处理句柄
|
|
fileHandler *excelize.File
|
|
}
|
|
|
|
// GenerateSheet 生成sheet
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 12:43 下午 2021/11/19
|
|
func (c *Create) GenerateSheet(sheetList []SheetData) error {
|
|
for _, sheet := range sheetList {
|
|
sheetIndex := c.fileHandler.NewSheet(sheet.Name)
|
|
if sheet.IsDefault {
|
|
// 设置活跃
|
|
c.fileHandler.SetActiveSheet(sheetIndex)
|
|
}
|
|
for lineIdx, colList := range sheet.Data {
|
|
for colIdx, col := range colList {
|
|
position := c.getColPosition(colIdx, lineIdx)
|
|
if err := c.fileHandler.SetCellValue(sheet.Name, position, col); nil != err {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Save 保存文件
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2:04 下午 2021/11/19
|
|
func (c *Create) Save(fullFilePath string) error {
|
|
return c.fileHandler.SaveAs(fullFilePath)
|
|
}
|
|
|
|
// getColPosition 获取列名
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 3:14 下午 2021/11/19
|
|
func (c *Create) getColPosition(colIndex int, dataLineIndex int) string {
|
|
realIndex := colIndex % 26
|
|
first := colIndex / 26
|
|
if first == 0 {
|
|
return fmt.Sprintf("%s%d", WordMap[realIndex], dataLineIndex+1)
|
|
}
|
|
return fmt.Sprintf("%s%s%d", WordMap[first], WordMap[realIndex], dataLineIndex+1)
|
|
}
|