excelize_test.go 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. package excelize
  2. import (
  3. _ "image/gif"
  4. _ "image/jpeg"
  5. _ "image/png"
  6. "strconv"
  7. "testing"
  8. )
  9. func TestOpenFile(t *testing.T) {
  10. // Test update a XLSX file.
  11. xlsx, err := OpenFile("./test/Workbook1.xlsx")
  12. if err != nil {
  13. t.Log(err)
  14. }
  15. // Test get all the rows in a not exists sheet.
  16. rows := xlsx.GetRows("Sheet4")
  17. // Test get all the rows in a sheet.
  18. rows = xlsx.GetRows("Sheet2")
  19. for _, row := range rows {
  20. for _, cell := range row {
  21. t.Log(cell, "\t")
  22. }
  23. t.Log("\r\n")
  24. }
  25. xlsx.UpdateLinkedValue()
  26. xlsx.SetCellDefault("SHEET2", "A1", strconv.FormatFloat(float64(100.1588), 'f', -1, 32))
  27. xlsx.SetCellDefault("SHEET2", "A1", strconv.FormatFloat(float64(-100.1588), 'f', -1, 64))
  28. xlsx.SetCellInt("SHEET2", "A1", 100)
  29. xlsx.SetCellStr("SHEET2", "C11", "Knowns")
  30. // Test max characters in a cell.
  31. var s = "c"
  32. for i := 0; i < 32768; i++ {
  33. s += "c"
  34. }
  35. xlsx.SetCellStr("SHEET2", "D11", s)
  36. xlsx.NewSheet(3, ":\\/?*[]Maximum 31 characters allowed in sheet title.")
  37. // Test set sheet name with illegal name.
  38. xlsx.SetSheetName("Maximum 31 characters allowed i", "[Rename]:\\/?* Maximum 31 characters allowed in sheet title.")
  39. xlsx.SetCellInt("Sheet3", "A23", 10)
  40. xlsx.SetCellStr("SHEET3", "b230", "10")
  41. xlsx.SetCellStr("SHEET10", "b230", "10")
  42. xlsx.SetActiveSheet(2)
  43. xlsx.GetCellFormula("Sheet1", "B19") // Test get cell formula with given rows number.
  44. xlsx.GetCellFormula("Sheet2", "B20") // Test get cell formula with illegal sheet index.
  45. xlsx.GetCellFormula("Sheet1", "B20") // Test get cell formula with illegal rows number.
  46. // Test read cell value with given illegal rows number.
  47. xlsx.GetCellValue("Sheet2", "a-1")
  48. // Test read cell value with given lowercase column number.
  49. xlsx.GetCellValue("Sheet2", "a5")
  50. xlsx.GetCellValue("Sheet2", "C11")
  51. xlsx.GetCellValue("Sheet2", "D11")
  52. xlsx.GetCellValue("Sheet2", "D12")
  53. // Test SetCellValue function.
  54. xlsx.SetCellValue("Sheet2", "F1", "Hello")
  55. xlsx.SetCellValue("Sheet2", "G1", []byte("World"))
  56. xlsx.SetCellValue("Sheet2", "F2", 42)
  57. xlsx.SetCellValue("Sheet2", "F2", int8(42))
  58. xlsx.SetCellValue("Sheet2", "F2", int16(42))
  59. xlsx.SetCellValue("Sheet2", "F2", int32(42))
  60. xlsx.SetCellValue("Sheet2", "F2", int64(42))
  61. xlsx.SetCellValue("Sheet2", "F2", float32(42.65418))
  62. xlsx.SetCellValue("Sheet2", "F2", float64(-42.65418))
  63. xlsx.SetCellValue("Sheet2", "F2", float32(42))
  64. xlsx.SetCellValue("Sheet2", "F2", float64(42))
  65. xlsx.SetCellValue("Sheet2", "G2", nil)
  66. // Test completion column.
  67. xlsx.SetCellValue("Sheet2", "M2", nil)
  68. // Test read cell value with given axis large than exists row.
  69. xlsx.GetCellValue("Sheet2", "E231")
  70. // Test get active sheet of XLSX and get sheet name of XLSX by given sheet index.
  71. xlsx.GetSheetName(xlsx.GetActiveSheetIndex())
  72. // Test get sheet name of XLSX by given invalid sheet index.
  73. xlsx.GetSheetName(4)
  74. // Test get sheet map of XLSX.
  75. xlsx.GetSheetMap()
  76. for i := 1; i <= 300; i++ {
  77. xlsx.SetCellStr("SHEET3", "c"+strconv.Itoa(i), strconv.Itoa(i))
  78. }
  79. err = xlsx.Save()
  80. if err != nil {
  81. t.Log(err)
  82. }
  83. // Test write file to not exist directory.
  84. err = xlsx.WriteTo("")
  85. if err != nil {
  86. t.Log(err)
  87. }
  88. }
  89. func TestAddPicture(t *testing.T) {
  90. xlsx, err := OpenFile("./test/Workbook1.xlsx")
  91. if err != nil {
  92. t.Log(err)
  93. }
  94. // Test add picture to sheet.
  95. err = xlsx.AddPicture("Sheet2", "I9", "./test/images/excel.jpg", 140, 120, 1, 1)
  96. if err != nil {
  97. t.Log(err)
  98. }
  99. // Test add picture to sheet with offset.
  100. err = xlsx.AddPicture("Sheet1", "F21", "./test/images/excel.png", 10, 10, 1, 1)
  101. if err != nil {
  102. t.Log(err)
  103. }
  104. // Test add picture to sheet with invalid file path.
  105. err = xlsx.AddPicture("Sheet1", "G21", "./test/images/excel.icon", 0, 0, 1, 1)
  106. if err != nil {
  107. t.Log(err)
  108. }
  109. // Test add picture to sheet with unsupport file type.
  110. err = xlsx.AddPicture("Sheet1", "G21", "./test/Workbook1.xlsx", 0, 0, 1, 1)
  111. if err != nil {
  112. t.Log(err)
  113. }
  114. // Test write file to given path.
  115. err = xlsx.WriteTo("./test/Workbook_2.xlsx")
  116. if err != nil {
  117. t.Log(err)
  118. }
  119. }
  120. func TestBrokenFile(t *testing.T) {
  121. // Test write file with broken file struct.
  122. xlsx := File{}
  123. err := xlsx.Save()
  124. if err != nil {
  125. t.Log(err)
  126. }
  127. // Test write file with broken file struct with given path.
  128. err = xlsx.WriteTo("./test/Workbook_3.xlsx")
  129. if err != nil {
  130. t.Log(err)
  131. }
  132. // Test set active sheet without BookViews and Sheets maps in xl/workbook.xml.
  133. f3, err := OpenFile("./test/badWorkbook.xlsx")
  134. f3.SetActiveSheet(2)
  135. if err != nil {
  136. t.Log(err)
  137. }
  138. // Test open a XLSX file with given illegal path.
  139. _, err = OpenFile("./test/Workbook.xlsx")
  140. if err != nil {
  141. t.Log(err)
  142. }
  143. }
  144. func TestCreateFile(t *testing.T) {
  145. // Test create a XLSX file.
  146. xlsx := CreateFile()
  147. xlsx.NewSheet(2, "XLSXSheet2")
  148. xlsx.NewSheet(3, "XLSXSheet3")
  149. xlsx.SetCellInt("Sheet2", "A23", 56)
  150. xlsx.SetCellStr("SHEET1", "B20", "42")
  151. xlsx.SetActiveSheet(0)
  152. // Test add picture to sheet with scaling.
  153. err := xlsx.AddPicture("Sheet1", "H2", "./test/images/excel.gif", 0, 0, 0.5, 0.5)
  154. if err != nil {
  155. t.Log(err)
  156. }
  157. err = xlsx.AddPicture("Sheet1", "C2", "./test/images/excel.png", 0, 0, 1, 1)
  158. if err != nil {
  159. t.Log(err)
  160. }
  161. err = xlsx.WriteTo("./test/Workbook_3.xlsx")
  162. if err != nil {
  163. t.Log(err)
  164. }
  165. }
  166. func TestSetColWidth(t *testing.T) {
  167. xlsx := CreateFile()
  168. xlsx.SetColWidth("sheet1", "B", "A", 12)
  169. xlsx.SetColWidth("sheet1", "A", "B", 12)
  170. err := xlsx.WriteTo("./test/Workbook_4.xlsx")
  171. if err != nil {
  172. t.Log(err)
  173. }
  174. }
  175. func TestSetCellHyperLink(t *testing.T) {
  176. xlsx, err := OpenFile("./test/Workbook1.xlsx")
  177. if err != nil {
  178. t.Log(err)
  179. }
  180. // Test set cell hyperlink in a work sheet already have hyperlinks.
  181. xlsx.SetCellHyperLink("sheet1", "B19", "https://github.com/Luxurioust/excelize")
  182. // Test add first hyperlink in a work sheet.
  183. xlsx.SetCellHyperLink("sheet2", "C1", "https://github.com/Luxurioust/excelize")
  184. err = xlsx.Save()
  185. if err != nil {
  186. t.Log(err)
  187. }
  188. }
  189. func TestSetCellFormula(t *testing.T) {
  190. xlsx, err := OpenFile("./test/Workbook1.xlsx")
  191. if err != nil {
  192. t.Log(err)
  193. }
  194. xlsx.SetCellFormula("sheet1", "B19", "SUM(Sheet2!D2,Sheet2!D11)")
  195. xlsx.SetCellFormula("sheet1", "C19", "SUM(Sheet2!D2,Sheet2!D9)")
  196. err = xlsx.Save()
  197. if err != nil {
  198. t.Log(err)
  199. }
  200. }
  201. func TestSetSheetBackground(t *testing.T) {
  202. xlsx, err := OpenFile("./test/Workbook1.xlsx")
  203. if err != nil {
  204. t.Log(err)
  205. }
  206. err = xlsx.SetSheetBackground("sheet2", "./test/images/background.png")
  207. if err != nil {
  208. t.Log(err)
  209. }
  210. err = xlsx.SetSheetBackground("sheet2", "./test/Workbook1.xlsx")
  211. if err != nil {
  212. t.Log(err)
  213. }
  214. err = xlsx.SetSheetBackground("sheet2", "./test/images/background.jpg")
  215. if err != nil {
  216. t.Log(err)
  217. }
  218. err = xlsx.SetSheetBackground("sheet2", "./test/images/background.jpg")
  219. if err != nil {
  220. t.Log(err)
  221. }
  222. err = xlsx.Save()
  223. if err != nil {
  224. t.Log(err)
  225. }
  226. }
  227. func TestSMergeCell(t *testing.T) {
  228. xlsx, err := OpenFile("./test/Workbook1.xlsx")
  229. if err != nil {
  230. t.Log(err)
  231. }
  232. xlsx.MergeCell("Sheet1", "D9", "D9")
  233. xlsx.MergeCell("Sheet1", "D9", "E9")
  234. xlsx.MergeCell("Sheet1", "H14", "G13")
  235. xlsx.MergeCell("Sheet1", "C9", "D8")
  236. xlsx.MergeCell("Sheet1", "F11", "G13")
  237. xlsx.MergeCell("Sheet1", "H7", "B15")
  238. xlsx.MergeCell("Sheet1", "D11", "F13")
  239. xlsx.MergeCell("Sheet1", "G10", "K12")
  240. xlsx.SetCellValue("Sheet1", "G11", "set value in merged cell")
  241. xlsx.SetCellInt("Sheet1", "H11", 100)
  242. xlsx.SetCellValue("Sheet1", "I11", float64(0.5))
  243. xlsx.SetCellHyperLink("Sheet1", "J11", "https://github.com/Luxurioust/excelize")
  244. xlsx.SetCellFormula("Sheet1", "G12", "SUM(Sheet1!B19,Sheet1!C19)")
  245. xlsx.GetCellValue("Sheet1", "H11")
  246. xlsx.GetCellFormula("Sheet1", "G12")
  247. err = xlsx.Save()
  248. if err != nil {
  249. t.Log(err)
  250. }
  251. }