package xlsx import ( "context" "joybuywork/internal/plugins/export" "fmt" "testing" ) func getData() (export.HeaderField, []export.RowData) { header := export.HeaderField{ { Field: "name", Title: "姓名", }, { Field: "age", Title: "年龄", }, { Field: "like", Title: "喜欢", }, { Field: "type", Title: "类型", }, } var data []export.RowData for i := 0; i < 20; i++ { row := export.RowData{ "name": fmt.Sprintf("学生%d", i), "age": 15, "like": fmt.Sprintf("不知道%d", i), "type": i % 3, } data = append(data, row) } return header, data } func TestExportXlsx(t *testing.T) { header, data := getData() ept := NewExport(context.Background(), header, int64(len(data))) err := ept.ExportFile(data) t.Log(err, ept.GetFullPath()) } func TestProceed(t *testing.T) { header, data := getData() xt, err := NewExport(context.Background(), header, int64(len(data)), export.UseFile( "ept_c6dhe3kjmgh5q40gftsg82921.xlsx", "G:\\Work\\go\\src\\app_service\\pkg\\components\\export\\xlsx/tmp/export/ept_c6dhe3kjmgh5q40gftsg82921.xlsx", ), ).UpgradeTask(export.UserProceed(500, 0)) if err != nil { t.Log(err) return } export.Done(xt) xt.AppendData(data) reply := <-xt.GetReply() if reply.Error != nil { t.Log(err) return } t.Log(reply.Filename, reply.FilePath, reply.Fr) } func TestExportXlsxSheet(t *testing.T) { header, data := getData() dataL := int64(len(data)) xt, err := NewExport(context.Background(), header, dataL).Use( UseDefaultSheet("一阶"), UseManySheet( Sheet{ Name: "一阶", Header: header, Total: 10, SwitchField: []SwitchField{ { Key: "type", Val: 0, }, }, }, Sheet{ Name: "二阶", Header: header, Total: 5, SwitchField: []SwitchField{ { Key: "type", Val: 1, }, }, }, Sheet{ Name: "三阶", Header: header, Total: 5, SwitchField: []SwitchField{ { Key: "type", Val: 2, }, }, }, ), ).UpgradeTask() if err != nil { t.Log(err) return } export.Done(xt) xt.AppendData(data) reply := <-xt.GetReply() if reply.Error != nil { t.Log(reply.Error) return } t.Log(reply.Filename, reply.FilePath, reply.Fr) } func TestExportXlsxTask(t *testing.T) { header, data := getData() xt, err := NewExport(context.Background(), header, int64(len(data))).UpgradeTask(export.UseFinishPart(200, func(spn, nfp float64) { t.Log(spn, nfp) })) if err != nil { t.Log(err) return } xt.GetHashMark() export.Done(xt) xt.AppendData(data) reply := <-xt.GetReply() if reply.Error != nil { t.Log(err) return } t.Log(reply.Filename, reply.FilePath, reply.Fr) }