cellmerged_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package excelize
  2. import (
  3. "path/filepath"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func TestGetMergeCells(t *testing.T) {
  8. wants := []struct {
  9. value string
  10. start string
  11. end string
  12. }{{
  13. value: "A1",
  14. start: "A1",
  15. end: "B1",
  16. }, {
  17. value: "A2",
  18. start: "A2",
  19. end: "A3",
  20. }, {
  21. value: "A4",
  22. start: "A4",
  23. end: "B5",
  24. }, {
  25. value: "A7",
  26. start: "A7",
  27. end: "C10",
  28. }}
  29. f, err := OpenFile(filepath.Join("test", "MergeCell.xlsx"))
  30. if !assert.NoError(t, err) {
  31. t.FailNow()
  32. }
  33. sheet1 := f.GetSheetName(1)
  34. mergeCells, err := f.GetMergeCells(sheet1)
  35. if !assert.Len(t, mergeCells, len(wants)) {
  36. t.FailNow()
  37. }
  38. assert.NoError(t, err)
  39. for i, m := range mergeCells {
  40. assert.Equal(t, wants[i].value, m.GetCellValue())
  41. assert.Equal(t, wants[i].start, m.GetStartAxis())
  42. assert.Equal(t, wants[i].end, m.GetEndAxis())
  43. }
  44. // Test get merged cells on not exists worksheet.
  45. _, err = f.GetMergeCells("SheetN")
  46. assert.EqualError(t, err, "sheet SheetN is not exist")
  47. }
  48. func TestUnmergeCell(t *testing.T) {
  49. f, err := OpenFile(filepath.Join("test", "MergeCell.xlsx"))
  50. if !assert.NoError(t, err) {
  51. t.FailNow()
  52. }
  53. sheet1 := f.GetSheetName(1)
  54. xlsx, err := f.workSheetReader(sheet1)
  55. assert.NoError(t, err)
  56. mergeCellNum := len(xlsx.MergeCells.Cells)
  57. assert.EqualError(t, f.UnmergeCell("Sheet1", "A", "A"), `cannot convert cell "A" to coordinates: invalid cell name "A"`)
  58. // unmerge the mergecell that contains A1
  59. err = f.UnmergeCell(sheet1, "A1", "A1")
  60. assert.NoError(t, err)
  61. if len(xlsx.MergeCells.Cells) != mergeCellNum-1 {
  62. t.FailNow()
  63. }
  64. // unmerge area A7:D3(A3:D7)
  65. // this will unmerge all since this area overlaps with all others
  66. err = f.UnmergeCell(sheet1, "D7", "A3")
  67. assert.NoError(t, err)
  68. if len(xlsx.MergeCells.Cells) != 0 {
  69. t.FailNow()
  70. }
  71. // Test unmerged area on not exists worksheet.
  72. err = f.UnmergeCell("SheetN", "A1", "A1")
  73. assert.EqualError(t, err, "sheet SheetN is not exist")
  74. }