You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
2.7 KiB
Go

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)
}