package createExecel
import (
"fmt"
"ginblog/azureBill/azmode"
"ginblog/azureBill/chanpip"
"github.com/tealeg/xlsx"
"reflect"
"sync/atomic"
)
type Excel struct {
File *xlsx.File
Sheet *xlsx.Sheet
Count int
LenHead int
}
func (e *Excel)Save(fileName string) error {
if err := e.File.Save(fileName); err!=nil{
return err
}
return nil
}
func GetModeField(mode interface{}) []string {
var (
headList []string
name string
)
headList = make([]string, 0)
t := reflect.TypeOf(mode)
for i:=0;i<t.NumField();i++{
name = t.Field(i).Name
headList = append(headList, name)
}
return headList
}
func NewExcel(headList []string)(*Excel, error) {
var(
err error
sheet *xlsx.Sheet
row *xlsx.Row
)
file := xlsx.NewFile()
if sheet, err = file.AddSheet("Sheet1"); err !=nil{
fmt.Println(err)
return nil, err
}
row = sheet.AddRow()
row.SetHeightCM(1)
row.WriteSlice(&headList, len(headList))
return &Excel{File:file, Sheet:sheet, LenHead:len(headList)}, nil
}
func (e *Excel)WriteLine(rest azmode.ResultMode, len int) {
row := e.Sheet.AddRow()
row.SetHeightCM(1)
row.WriteStruct(&rest, len)
e.Count ++
}