-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathexcel_test.go
115 lines (102 loc) · 2.63 KB
/
excel_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package structexcel
import (
"encoding/json"
"fmt"
"os"
"reflect"
"testing"
)
type foo struct {
Name string `excel:"姓名" json:"name"`
Age *int `excel:"年龄,allowempty" json:"age"`
Height int `excel:"身高,font{color:ff0000 size:16}" json:"height"`
Holiday map[string]bool `excel:"假期,expand:regexp(^\\d{4}-\\d{2}-\\d{2}$)" json:"holiday"`
}
func (f foo) GatherHeaderRows() int {
return 1
}
func (f foo) GatherHeader(sheet *Sheet) error {
style, _ := sheet.GetCenterStyle()
headerLine := "7"
sheet.Excel.SetCellValue(sheet.SheetName, "A"+headerLine, "个人信息")
sheet.Excel.MergeCell(sheet.SheetName, "A"+headerLine, "C"+headerLine)
sheet.Excel.SetCellStyle(sheet.SheetName, "A"+headerLine, "C"+headerLine, style)
sheet.Excel.SetCellValue(sheet.SheetName, "D"+headerLine, "假期信息")
sheet.Excel.MergeCell(sheet.SheetName, "D"+headerLine, "I"+headerLine)
return nil
}
func (f foo) Remarks() (string, int, int) {
return `.特别注意:导入数值加逗号格式,很经常被Excel带成数值,可在前面加个'号,或设置单元格格式为文本
.导入规则:
.全局名称不允许重复
.各种包含类型枚举:可为空表示不定向,或输入:不限、包含、不包含
`, 6, 9
}
func TestNewExcel(t *testing.T) {
excel := NewExcel("helloworld.xlsx")
defer excel.File.Close()
data := make([]*foo, 0)
age := 28
data = append(data, &foo{
Name: "h",
Age: &age,
Height: 181,
Holiday: map[string]bool{
"2022-01-27": false,
"2022-01-28": true,
"2022-01-29": true,
},
}, &foo{
Name: "o",
Age: &age,
Height: 182,
Holiday: map[string]bool{
"2022-01-27": true,
"2022-01-28": true,
"2022-01-30": true,
"2022-02-09": true,
"2022-12-09": true,
},
})
sheet, err := excel.AddSheet("hello")
if err != nil {
t.Fatal(err)
}
if err = sheet.AddData(data); err != nil {
t.Error(err)
return
}
if err = excel.SaveAs(); err != nil {
t.Errorf("文件保存失败: %s", err.Error())
return
}
dir, _ := os.Getwd()
fmt.Println("当前路径:", dir)
return
}
func TestParseExcelHeaderTag(t *testing.T) {
f := foo{
Name: "douyacun",
}
val := reflect.ValueOf(f)
fmt.Println(val.Type().Field(0).Name)
}
func TestReadData(t *testing.T) {
excel, err := OpenExcel("helloword.xlsx")
if err != nil {
t.Error(err)
}
sheet, err := excel.OpenSheet("hello")
if err != nil {
t.Error(err)
}
if data, err := sheet.ReadData(foo{}); err != nil {
t.Error(err)
} else if d, ok := data.([]*foo); ok {
if str, err := json.Marshal(d); err != nil {
t.Error(err)
} else {
fmt.Println(string(str))
}
}
}