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

import (
4 5 6
	_ "image/gif"
	_ "image/jpeg"
	_ "image/png"
xurime's avatar
xurime 已提交
7
	"strconv"
xurime's avatar
xurime 已提交
8 9 10
	"testing"
)

11
func TestOpenFile(t *testing.T) {
xurime's avatar
xurime 已提交
12
	// Test update a XLSX file.
13
	xlsx, err := OpenFile("./test/Workbook1.xlsx")
14 15 16
	if err != nil {
		t.Log(err)
	}
17
	// Test get all the rows in a not exists sheet.
18
	rows := xlsx.GetRows("Sheet4")
19
	// Test get all the rows in a sheet.
20
	rows = xlsx.GetRows("Sheet2")
21 22 23 24 25 26
	for _, row := range rows {
		for _, cell := range row {
			t.Log(cell, "\t")
		}
		t.Log("\r\n")
	}
27 28 29 30 31 32 33 34 35 36 37 38
	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.")
39
	// Test set sheet name with illegal name.
40 41 42 43 44 45 46 47
	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 已提交
48
	// Test read cell value with given illegal rows number.
49
	xlsx.GetCellValue("Sheet2", "a-1")
xurime's avatar
xurime 已提交
50
	// Test read cell value with given lowercase column number.
51 52 53 54
	xlsx.GetCellValue("Sheet2", "a5")
	xlsx.GetCellValue("Sheet2", "C11")
	xlsx.GetCellValue("Sheet2", "D11")
	xlsx.GetCellValue("Sheet2", "D12")
xurime's avatar
xurime 已提交
55
	// Test SetCellValue function.
56 57 58 59 60 61 62 63 64 65 66 67
	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 已提交
68
	// Test completion column.
69
	xlsx.SetCellValue("Sheet2", "M2", nil)
xurime's avatar
xurime 已提交
70
	// Test read cell value with given axis large than exists row.
71
	xlsx.GetCellValue("Sheet2", "E231")
72
	// Test get active sheet of XLSX and get sheet name of XLSX by given sheet index.
73
	xlsx.GetSheetName(xlsx.GetActiveSheetIndex())
74
	// Test get sheet name of XLSX by given invalid sheet index.
75
	xlsx.GetSheetName(4)
76
	// Test get sheet map of XLSX.
77
	xlsx.GetSheetMap()
78
	for i := 1; i <= 300; i++ {
79 80 81 82 83 84 85 86 87 88
		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 已提交
89
	}
90 91 92 93
}

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

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

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

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

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

func TestSetColWidth(t *testing.T) {
175
	xlsx := CreateFile()
176 177
	xlsx.SetColWidth("sheet1", "B", "A", 12)
	xlsx.SetColWidth("sheet1", "A", "B", 12)
178
	err := xlsx.WriteTo("./test/Workbook_4.xlsx")
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200
	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")
201 202 203
	if err != nil {
		t.Log(err)
	}
204 205 206
	xlsx.SetCellFormula("sheet1", "B19", "SUM(Sheet2!D2,Sheet2!D11)")
	xlsx.SetCellFormula("sheet1", "C19", "SUM(Sheet2!D2,Sheet2!D9)")
	err = xlsx.Save()
207 208 209 210
	if err != nil {
		t.Log(err)
	}
}
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237

func TestSetSheetBackground(t *testing.T) {
	xlsx, err := OpenFile("./test/Workbook1.xlsx")
	if err != nil {
		t.Log(err)
	}
	err = xlsx.SetSheetBackground("sheet2", "./test/images/background.png")
	if err != nil {
		t.Log(err)
	}
	err = xlsx.SetSheetBackground("sheet2", "./test/Workbook1.xlsx")
	if err != nil {
		t.Log(err)
	}
	err = xlsx.SetSheetBackground("sheet2", "./test/images/background.jpg")
	if err != nil {
		t.Log(err)
	}
	err = xlsx.SetSheetBackground("sheet2", "./test/images/background.jpg")
	if err != nil {
		t.Log(err)
	}
	err = xlsx.Save()
	if err != nil {
		t.Log(err)
	}
}
xurime's avatar
xurime 已提交
238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256

func TestSMergeCell(t *testing.T) {
	xlsx, err := OpenFile("./test/Workbook1.xlsx")
	if err != nil {
		t.Log(err)
	}
	xlsx.MergeCell("sheet1", "D9", "D9")
	xlsx.MergeCell("sheet1", "D9", "E9")
	xlsx.MergeCell("sheet1", "H14", "G13")
	xlsx.MergeCell("sheet1", "C9", "D8")
	xlsx.MergeCell("sheet1", "F11", "G13")
	xlsx.MergeCell("sheet1", "H7", "B15")
	xlsx.MergeCell("sheet1", "D11", "F13")
	xlsx.MergeCell("sheet1", "G10", "I11")
	err = xlsx.Save()
	if err != nil {
		t.Log(err)
	}
}