excelize_test.go 6.2 KB
Newer Older
xurime's avatar
xurime 已提交
1 2 3
package excelize

import (
xurime's avatar
xurime 已提交
4
	"strconv"
xurime's avatar
xurime 已提交
5 6 7
	"testing"
)

8
func TestOpenFile(t *testing.T) {
xurime's avatar
xurime 已提交
9
	// Test update a XLSX file.
10
	xlsx, err := OpenFile("./test/Workbook1.xlsx")
11 12 13
	if err != nil {
		t.Log(err)
	}
14
	// Test get all the rows in a not exists sheet.
15
	rows := xlsx.GetRows("Sheet4")
16
	// Test get all the rows in a sheet.
17
	rows = xlsx.GetRows("Sheet2")
18 19 20 21 22 23
	for _, row := range rows {
		for _, cell := range row {
			t.Log(cell, "\t")
		}
		t.Log("\r\n")
	}
24 25 26 27 28 29 30 31 32 33 34 35
	xlsx.UpdateLinkedValue()
	xlsx.SetCellDefault("SHEET2", "A1", strconv.FormatFloat(float64(100.1588), 'f', -1, 32))
	xlsx.SetCellDefault("SHEET2", "A1", strconv.FormatFloat(float64(-100.1588), 'f', -1, 64))
	xlsx.SetCellInt("SHEET2", "A1", 100)
	xlsx.SetCellStr("SHEET2", "C11", "Knowns")
	// Test max characters in a cell.
	var s = "c"
	for i := 0; i < 32768; i++ {
		s += "c"
	}
	xlsx.SetCellStr("SHEET2", "D11", s)
	xlsx.NewSheet(3, ":\\/?*[]Maximum 31 characters allowed in sheet title.")
36
	// Test set sheet name with illegal name.
37 38 39 40 41 42 43 44
	xlsx.SetSheetName("Maximum 31 characters allowed i", "[Rename]:\\/?* Maximum 31 characters allowed in sheet title.")
	xlsx.SetCellInt("Sheet3", "A23", 10)
	xlsx.SetCellStr("SHEET3", "b230", "10")
	xlsx.SetCellStr("SHEET10", "b230", "10")
	xlsx.SetActiveSheet(2)
	xlsx.GetCellFormula("Sheet1", "B19") // Test get cell formula with given rows number.
	xlsx.GetCellFormula("Sheet2", "B20") // Test get cell formula with illegal sheet index.
	xlsx.GetCellFormula("Sheet1", "B20") // Test get cell formula with illegal rows number.
xurime's avatar
xurime 已提交
45
	// Test read cell value with given illegal rows number.
46
	xlsx.GetCellValue("Sheet2", "a-1")
xurime's avatar
xurime 已提交
47
	// Test read cell value with given lowercase column number.
48 49 50 51
	xlsx.GetCellValue("Sheet2", "a5")
	xlsx.GetCellValue("Sheet2", "C11")
	xlsx.GetCellValue("Sheet2", "D11")
	xlsx.GetCellValue("Sheet2", "D12")
xurime's avatar
xurime 已提交
52
	// Test SetCellValue function.
53 54 55 56 57 58 59 60 61 62 63 64
	xlsx.SetCellValue("Sheet2", "F1", "Hello")
	xlsx.SetCellValue("Sheet2", "G1", []byte("World"))
	xlsx.SetCellValue("Sheet2", "F2", 42)
	xlsx.SetCellValue("Sheet2", "F2", int8(42))
	xlsx.SetCellValue("Sheet2", "F2", int16(42))
	xlsx.SetCellValue("Sheet2", "F2", int32(42))
	xlsx.SetCellValue("Sheet2", "F2", int64(42))
	xlsx.SetCellValue("Sheet2", "F2", float32(42.65418))
	xlsx.SetCellValue("Sheet2", "F2", float64(-42.65418))
	xlsx.SetCellValue("Sheet2", "F2", float32(42))
	xlsx.SetCellValue("Sheet2", "F2", float64(42))
	xlsx.SetCellValue("Sheet2", "G2", nil)
xurime's avatar
xurime 已提交
65
	// Test completion column.
66
	xlsx.SetCellValue("Sheet2", "M2", nil)
xurime's avatar
xurime 已提交
67
	// Test read cell value with given axis large than exists row.
68
	xlsx.GetCellValue("Sheet2", "E231")
69
	// Test get active sheet of XLSX and get sheet name of XLSX by given sheet index.
70
	xlsx.GetSheetName(xlsx.GetActiveSheetIndex())
71
	// Test get sheet name of XLSX by given invalid sheet index.
72
	xlsx.GetSheetName(4)
73
	// Test get sheet map of XLSX.
74
	xlsx.GetSheetMap()
75
	for i := 1; i <= 300; i++ {
76 77 78 79 80 81 82 83 84 85
		xlsx.SetCellStr("SHEET3", "c"+strconv.Itoa(i), strconv.Itoa(i))
	}
	err = xlsx.Save()
	if err != nil {
		t.Log(err)
	}
	// Test write file to not exist directory.
	err = xlsx.WriteTo("")
	if err != nil {
		t.Log(err)
xurime's avatar
xurime 已提交
86
	}
87 88 89 90
}

func TestAddPicture(t *testing.T) {
	xlsx, err := OpenFile("./test/Workbook1.xlsx")
xurime's avatar
xurime 已提交
91
	if err != nil {
92
		t.Log(err)
xurime's avatar
xurime 已提交
93
	}
94
	// Test add picture to sheet.
95
	err = xlsx.AddPicture("Sheet2", "I1", "L10", "./test/images/excel.jpg")
96 97 98
	if err != nil {
		t.Log(err)
	}
99
	err = xlsx.AddPicture("Sheet1", "F21", "G25", "./test/images/excel.png")
100 101 102
	if err != nil {
		t.Log(err)
	}
103
	err = xlsx.AddPicture("Sheet2", "L1", "O10", "./test/images/excel.bmp")
104 105 106
	if err != nil {
		t.Log(err)
	}
107
	err = xlsx.AddPicture("Sheet1", "G21", "H25", "./test/images/excel.ico")
108 109 110 111
	if err != nil {
		t.Log(err)
	}
	// Test add picture to sheet with unsupport file type.
112
	err = xlsx.AddPicture("Sheet1", "G21", "H25", "./test/images/excel.icon")
113 114 115 116
	if err != nil {
		t.Log(err)
	}
	// Test add picture to sheet with invalid file path.
117
	err = xlsx.AddPicture("Sheet1", "G21", "H25", "./test/Workbook1.xlsx")
118 119 120
	if err != nil {
		t.Log(err)
	}
xurime's avatar
xurime 已提交
121
	// Test write file to given path.
122
	err = xlsx.WriteTo("./test/Workbook_2.xlsx")
123 124 125
	if err != nil {
		t.Log(err)
	}
126
}
xurime's avatar
xurime 已提交
127

128
func TestBrokenFile(t *testing.T) {
xurime's avatar
xurime 已提交
129
	// Test write file with broken file struct.
130 131
	xlsx := File{}
	err := xlsx.Save()
xurime's avatar
xurime 已提交
132 133 134 135
	if err != nil {
		t.Log(err)
	}
	// Test write file with broken file struct with given path.
136
	err = xlsx.WriteTo("./test/Workbook_3.xlsx")
xurime's avatar
xurime 已提交
137 138 139 140
	if err != nil {
		t.Log(err)
	}

141 142 143
	// Test set active sheet without BookViews and Sheets maps in xl/workbook.xml.
	f3, err := OpenFile("./test/badWorkbook.xlsx")
	f3.SetActiveSheet(2)
144 145 146
	if err != nil {
		t.Log(err)
	}
147 148 149

	// Test open a XLSX file with given illegal path.
	_, err = OpenFile("./test/Workbook.xlsx")
150 151 152
	if err != nil {
		t.Log(err)
	}
153 154 155 156
}

func TestCreateFile(t *testing.T) {
	// Test create a XLSX file.
157 158 159 160 161 162
	xlsx := CreateFile()
	xlsx.NewSheet(2, "XLSXSheet2")
	xlsx.NewSheet(3, "XLSXSheet3")
	xlsx.SetCellInt("Sheet2", "A23", 56)
	xlsx.SetCellStr("SHEET1", "B20", "42")
	xlsx.SetActiveSheet(0)
163
	// Test add picture to sheet.
164
	err := xlsx.AddPicture("Sheet1", "H2", "K12", "./test/images/excel.gif")
xurime's avatar
xurime 已提交
165
	if err != nil {
166
		t.Log(err)
xurime's avatar
xurime 已提交
167
	}
168
	err = xlsx.AddPicture("Sheet1", "C2", "F12", "./test/images/excel.tif")
xurime's avatar
xurime 已提交
169 170 171
	if err != nil {
		t.Log(err)
	}
172
	err = xlsx.WriteTo("./test/Workbook_3.xlsx")
173 174 175
	if err != nil {
		t.Log(err)
	}
xurime's avatar
xurime 已提交
176
}
177 178

func TestSetColWidth(t *testing.T) {
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
	xlsx, err := OpenFile("./test/Workbook1.xlsx")
	if err != nil {
		t.Log(err)
	}
	xlsx.SetColWidth("sheet1", "B", "A", 12)
	xlsx.SetColWidth("sheet1", "A", "B", 12)
	err = xlsx.Save()
	if err != nil {
		t.Log(err)
	}
}

func TestSetCellHyperLink(t *testing.T) {
	xlsx, err := OpenFile("./test/Workbook1.xlsx")
	if err != nil {
		t.Log(err)
	}
	// Test set cell hyperlink in a work sheet already have hyperlinks.
	xlsx.SetCellHyperLink("sheet1", "B19", "https://github.com/Luxurioust/excelize")
	// Test add first hyperlink in a work sheet.
	xlsx.SetCellHyperLink("sheet2", "C1", "https://github.com/Luxurioust/excelize")
	err = xlsx.Save()
	if err != nil {
		t.Log(err)
	}
}

func TestSetCellFormula(t *testing.T) {
	xlsx, err := OpenFile("./test/Workbook1.xlsx")
208 209 210
	if err != nil {
		t.Log(err)
	}
211 212 213
	xlsx.SetCellFormula("sheet1", "B19", "SUM(Sheet2!D2,Sheet2!D11)")
	xlsx.SetCellFormula("sheet1", "C19", "SUM(Sheet2!D2,Sheet2!D9)")
	err = xlsx.Save()
214 215 216 217
	if err != nil {
		t.Log(err)
	}
}