From cbe919fdf6c00733513494680b89171b8b1b41a1 Mon Sep 17 00:00:00 2001 From: xuri Date: Sun, 4 Aug 2019 20:24:59 +0800 Subject: New feature: sparkline supported --- sparkline_test.go | 297 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 297 insertions(+) create mode 100644 sparkline_test.go (limited to 'sparkline_test.go') diff --git a/sparkline_test.go b/sparkline_test.go new file mode 100644 index 0000000..d52929b --- /dev/null +++ b/sparkline_test.go @@ -0,0 +1,297 @@ +package excelize + +import ( + "fmt" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestAddSparkline(t *testing.T) { + f := prepareSparklineDataset() + + // Set the columns widths to make the output clearer + style, err := f.NewStyle(`{"font":{"bold":true}}`) + assert.NoError(t, err) + assert.NoError(t, f.SetCellStyle("Sheet1", "A1", "B1", style)) + assert.NoError(t, f.SetSheetViewOptions("Sheet1", 0, ZoomScale(150))) + + f.SetColWidth("Sheet1", "A", "A", 14) + f.SetColWidth("Sheet1", "B", "B", 50) + // Headings + f.SetCellValue("Sheet1", "A1", "Sparkline") + f.SetCellValue("Sheet1", "B1", "Description") + + f.SetCellValue("Sheet1", "B2", `A default "line" sparkline.`) + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A2"}, + Range: []string{"Sheet3!A1:J1"}, + })) + + f.SetCellValue("Sheet1", "B3", `A default "column" sparkline.`) + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A3"}, + Range: []string{"Sheet3!A2:J2"}, + Type: "column", + })) + + f.SetCellValue("Sheet1", "B4", `A default "win/loss" sparkline.`) + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A4"}, + Range: []string{"Sheet3!A3:J3"}, + Type: "win_loss", + })) + + f.SetCellValue("Sheet1", "B6", "Line with markers.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A6"}, + Range: []string{"Sheet3!A1:J1"}, + Markers: true, + })) + + f.SetCellValue("Sheet1", "B7", "Line with high and low points.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A7"}, + Range: []string{"Sheet3!A1:J1"}, + High: true, + Low: true, + })) + + f.SetCellValue("Sheet1", "B8", "Line with first and last point markers.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A8"}, + Range: []string{"Sheet3!A1:J1"}, + First: true, + Last: true, + })) + + f.SetCellValue("Sheet1", "B9", "Line with negative point markers.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A9"}, + Range: []string{"Sheet3!A1:J1"}, + Negative: true, + })) + + f.SetCellValue("Sheet1", "B10", "Line with axis.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A10"}, + Range: []string{"Sheet3!A1:J1"}, + Axis: true, + })) + + f.SetCellValue("Sheet1", "B12", "Column with default style (1).") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A12"}, + Range: []string{"Sheet3!A2:J2"}, + Type: "column", + })) + + f.SetCellValue("Sheet1", "B13", "Column with style 2.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A13"}, + Range: []string{"Sheet3!A2:J2"}, + Type: "column", + Style: 2, + })) + + f.SetCellValue("Sheet1", "B14", "Column with style 3.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A14"}, + Range: []string{"Sheet3!A2:J2"}, + Type: "column", + Style: 3, + })) + + f.SetCellValue("Sheet1", "B15", "Column with style 4.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A15"}, + Range: []string{"Sheet3!A2:J2"}, + Type: "column", + Style: 4, + })) + + f.SetCellValue("Sheet1", "B16", "Column with style 5.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A16"}, + Range: []string{"Sheet3!A2:J2"}, + Type: "column", + Style: 5, + })) + + f.SetCellValue("Sheet1", "B17", "Column with style 6.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A17"}, + Range: []string{"Sheet3!A2:J2"}, + Type: "column", + Style: 6, + })) + + f.SetCellValue("Sheet1", "B18", "Column with a user defined color.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A18"}, + Range: []string{"Sheet3!A2:J2"}, + Type: "column", + SeriesColor: "#E965E0", + })) + + f.SetCellValue("Sheet1", "B20", "A win/loss sparkline.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A20"}, + Range: []string{"Sheet3!A3:J3"}, + Type: "win_loss", + })) + + f.SetCellValue("Sheet1", "B21", "A win/loss sparkline with negative points highlighted.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A21"}, + Range: []string{"Sheet3!A3:J3"}, + Type: "win_loss", + Negative: true, + })) + + f.SetCellValue("Sheet1", "B23", "A left to right column (the default).") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A23"}, + Range: []string{"Sheet3!A4:J4"}, + Type: "column", + Style: 20, + })) + + f.SetCellValue("Sheet1", "B24", "A right to left column.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A24"}, + Range: []string{"Sheet3!A4:J4"}, + Type: "column", + Style: 20, + Reverse: true, + })) + + f.SetCellValue("Sheet1", "B25", "Sparkline and text in one cell.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A25"}, + Range: []string{"Sheet3!A4:J4"}, + Type: "column", + Style: 20, + })) + f.SetCellValue("Sheet1", "A25", "Growth") + + f.SetCellValue("Sheet1", "B27", "A grouped sparkline. Changes are applied to all three.") + assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A27", "A28", "A29"}, + Range: []string{"Sheet3!A5:J5", "Sheet3!A6:J6", "Sheet3!A7:J7"}, + Markers: true, + })) + + // Sheet2 sections + assert.NoError(t, f.AddSparkline("Sheet2", &SparklineOption{ + Location: []string{"F3"}, + Range: []string{"Sheet2!A3:E3"}, + Type: "win_loss", + Negative: true, + })) + + assert.NoError(t, f.AddSparkline("Sheet2", &SparklineOption{ + Location: []string{"F1"}, + Range: []string{"Sheet2!A1:E1"}, + Markers: true, + })) + + assert.NoError(t, f.AddSparkline("Sheet2", &SparklineOption{ + Location: []string{"F2"}, + Range: []string{"Sheet2!A2:E2"}, + Type: "column", + Style: 12, + })) + + assert.NoError(t, f.AddSparkline("Sheet2", &SparklineOption{ + Location: []string{"F3"}, + Range: []string{"Sheet2!A3:E3"}, + Type: "win_loss", + Negative: true, + })) + + // Save xlsx file by the given path. + assert.NoError(t, f.SaveAs(filepath.Join("test", "TestAddSparkline.xlsx"))) + + // Test error exceptions + assert.EqualError(t, f.AddSparkline("SheetN", &SparklineOption{ + Location: []string{"F3"}, + Range: []string{"Sheet2!A3:E3"}, + }), "sheet SheetN is not exist") + + assert.EqualError(t, f.AddSparkline("Sheet1", nil), "parameter is required") + + assert.EqualError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Range: []string{"Sheet2!A3:E3"}, + }), `parameter 'Location' is required`) + + assert.EqualError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"F3"}, + }), `parameter 'Range' is required`) + + assert.EqualError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"F2", "F3"}, + Range: []string{"Sheet2!A3:E3"}, + }), `must have the same number of 'Location' and 'Range' parameters`) + + assert.EqualError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"F3"}, + Range: []string{"Sheet2!A3:E3"}, + Type: "unknown_type", + }), `parameter 'Type' must be 'line', 'column' or 'win_loss'`) + + assert.EqualError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"F3"}, + Range: []string{"Sheet2!A3:E3"}, + Style: -1, + }), `parameter 'Style' must betweent 0-35`) + + assert.EqualError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"F3"}, + Range: []string{"Sheet2!A3:E3"}, + Style: -1, + }), `parameter 'Style' must betweent 0-35`) + + f.Sheet["xl/worksheets/sheet1.xml"].ExtLst.Ext = ` + + + + + + + + ` + assert.EqualError(t, f.AddSparkline("Sheet1", &SparklineOption{ + Location: []string{"A2"}, + Range: []string{"Sheet3!A1:J1"}, + }), "XML syntax error on line 6: element closed by ") +} + +func prepareSparklineDataset() *File { + f := NewFile() + sheet2 := [][]int{ + {-2, 2, 3, -1, 0}, + {30, 20, 33, 20, 15}, + {1, -1, -1, 1, -1}, + } + sheet3 := [][]int{ + {-2, 2, 3, -1, 0, -2, 3, 2, 1, 0}, + {30, 20, 33, 20, 15, 5, 5, 15, 10, 15}, + {1, 1, -1, -1, 1, -1, 1, 1, 1, -1}, + {5, 6, 7, 10, 15, 20, 30, 50, 70, 100}, + {-2, 2, 3, -1, 0, -2, 3, 2, 1, 0}, + {3, -1, 0, -2, 3, 2, 1, 0, 2, 1}, + {0, -2, 3, 2, 1, 0, 1, 2, 3, 1}, + } + f.NewSheet("Sheet2") + f.NewSheet("Sheet3") + for row, data := range sheet2 { + f.SetSheetRow("Sheet2", fmt.Sprintf("A%d", row+1), &data) + } + for row, data := range sheet3 { + f.SetSheetRow("Sheet3", fmt.Sprintf("A%d", row+1), &data) + } + return f +} -- cgit v1.2.1 From ae2865d9237cfd27d7bc4fbef3870b3361597be8 Mon Sep 17 00:00:00 2001 From: xuri Date: Sun, 22 Dec 2019 00:02:09 +0800 Subject: Improve code coverage unit tests --- sparkline_test.go | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'sparkline_test.go') diff --git a/sparkline_test.go b/sparkline_test.go index d52929b..a5cb216 100644 --- a/sparkline_test.go +++ b/sparkline_test.go @@ -269,6 +269,15 @@ func TestAddSparkline(t *testing.T) { }), "XML syntax error on line 6: element closed by ") } +func TestAppendSparkline(t *testing.T) { + // Test unsupport charset. + f := NewFile() + ws, err := f.workSheetReader("Sheet1") + assert.NoError(t, err) + ws.ExtLst = &xlsxExtLst{Ext: string(MacintoshCyrillicCharset)} + assert.EqualError(t, f.appendSparkline(ws, &xlsxX14SparklineGroup{}, &xlsxX14SparklineGroups{}), "XML syntax error on line 1: invalid UTF-8") +} + func prepareSparklineDataset() *File { f := NewFile() sheet2 := [][]int{ -- cgit v1.2.1 From 1666d04559d9f5b579ab7c850ccc95863c31bd25 Mon Sep 17 00:00:00 2001 From: xuri Date: Tue, 24 Dec 2019 01:09:28 +0800 Subject: optimization: checking error in unit tests --- sparkline_test.go | 60 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 28 deletions(-) (limited to 'sparkline_test.go') diff --git a/sparkline_test.go b/sparkline_test.go index a5cb216..dca32e9 100644 --- a/sparkline_test.go +++ b/sparkline_test.go @@ -17,40 +17,40 @@ func TestAddSparkline(t *testing.T) { assert.NoError(t, f.SetCellStyle("Sheet1", "A1", "B1", style)) assert.NoError(t, f.SetSheetViewOptions("Sheet1", 0, ZoomScale(150))) - f.SetColWidth("Sheet1", "A", "A", 14) - f.SetColWidth("Sheet1", "B", "B", 50) + assert.NoError(t, f.SetColWidth("Sheet1", "A", "A", 14)) + assert.NoError(t, f.SetColWidth("Sheet1", "B", "B", 50)) // Headings - f.SetCellValue("Sheet1", "A1", "Sparkline") - f.SetCellValue("Sheet1", "B1", "Description") + assert.NoError(t, f.SetCellValue("Sheet1", "A1", "Sparkline")) + assert.NoError(t, f.SetCellValue("Sheet1", "B1", "Description")) - f.SetCellValue("Sheet1", "B2", `A default "line" sparkline.`) + assert.NoError(t, f.SetCellValue("Sheet1", "B2", `A default "line" sparkline.`)) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A2"}, Range: []string{"Sheet3!A1:J1"}, })) - f.SetCellValue("Sheet1", "B3", `A default "column" sparkline.`) + assert.NoError(t, f.SetCellValue("Sheet1", "B3", `A default "column" sparkline.`)) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A3"}, Range: []string{"Sheet3!A2:J2"}, Type: "column", })) - f.SetCellValue("Sheet1", "B4", `A default "win/loss" sparkline.`) + assert.NoError(t, f.SetCellValue("Sheet1", "B4", `A default "win/loss" sparkline.`)) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A4"}, Range: []string{"Sheet3!A3:J3"}, Type: "win_loss", })) - f.SetCellValue("Sheet1", "B6", "Line with markers.") + assert.NoError(t, f.SetCellValue("Sheet1", "B6", "Line with markers.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A6"}, Range: []string{"Sheet3!A1:J1"}, Markers: true, })) - f.SetCellValue("Sheet1", "B7", "Line with high and low points.") + assert.NoError(t, f.SetCellValue("Sheet1", "B7", "Line with high and low points.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A7"}, Range: []string{"Sheet3!A1:J1"}, @@ -58,7 +58,7 @@ func TestAddSparkline(t *testing.T) { Low: true, })) - f.SetCellValue("Sheet1", "B8", "Line with first and last point markers.") + assert.NoError(t, f.SetCellValue("Sheet1", "B8", "Line with first and last point markers.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A8"}, Range: []string{"Sheet3!A1:J1"}, @@ -66,28 +66,28 @@ func TestAddSparkline(t *testing.T) { Last: true, })) - f.SetCellValue("Sheet1", "B9", "Line with negative point markers.") + assert.NoError(t, f.SetCellValue("Sheet1", "B9", "Line with negative point markers.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A9"}, Range: []string{"Sheet3!A1:J1"}, Negative: true, })) - f.SetCellValue("Sheet1", "B10", "Line with axis.") + assert.NoError(t, f.SetCellValue("Sheet1", "B10", "Line with axis.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A10"}, Range: []string{"Sheet3!A1:J1"}, Axis: true, })) - f.SetCellValue("Sheet1", "B12", "Column with default style (1).") + assert.NoError(t, f.SetCellValue("Sheet1", "B12", "Column with default style (1).")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A12"}, Range: []string{"Sheet3!A2:J2"}, Type: "column", })) - f.SetCellValue("Sheet1", "B13", "Column with style 2.") + assert.NoError(t, f.SetCellValue("Sheet1", "B13", "Column with style 2.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A13"}, Range: []string{"Sheet3!A2:J2"}, @@ -95,7 +95,7 @@ func TestAddSparkline(t *testing.T) { Style: 2, })) - f.SetCellValue("Sheet1", "B14", "Column with style 3.") + assert.NoError(t, f.SetCellValue("Sheet1", "B14", "Column with style 3.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A14"}, Range: []string{"Sheet3!A2:J2"}, @@ -103,7 +103,7 @@ func TestAddSparkline(t *testing.T) { Style: 3, })) - f.SetCellValue("Sheet1", "B15", "Column with style 4.") + assert.NoError(t, f.SetCellValue("Sheet1", "B15", "Column with style 4.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A15"}, Range: []string{"Sheet3!A2:J2"}, @@ -111,7 +111,7 @@ func TestAddSparkline(t *testing.T) { Style: 4, })) - f.SetCellValue("Sheet1", "B16", "Column with style 5.") + assert.NoError(t, f.SetCellValue("Sheet1", "B16", "Column with style 5.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A16"}, Range: []string{"Sheet3!A2:J2"}, @@ -119,7 +119,7 @@ func TestAddSparkline(t *testing.T) { Style: 5, })) - f.SetCellValue("Sheet1", "B17", "Column with style 6.") + assert.NoError(t, f.SetCellValue("Sheet1", "B17", "Column with style 6.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A17"}, Range: []string{"Sheet3!A2:J2"}, @@ -127,7 +127,7 @@ func TestAddSparkline(t *testing.T) { Style: 6, })) - f.SetCellValue("Sheet1", "B18", "Column with a user defined color.") + assert.NoError(t, f.SetCellValue("Sheet1", "B18", "Column with a user defined color.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A18"}, Range: []string{"Sheet3!A2:J2"}, @@ -135,14 +135,14 @@ func TestAddSparkline(t *testing.T) { SeriesColor: "#E965E0", })) - f.SetCellValue("Sheet1", "B20", "A win/loss sparkline.") + assert.NoError(t, f.SetCellValue("Sheet1", "B20", "A win/loss sparkline.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A20"}, Range: []string{"Sheet3!A3:J3"}, Type: "win_loss", })) - f.SetCellValue("Sheet1", "B21", "A win/loss sparkline with negative points highlighted.") + assert.NoError(t, f.SetCellValue("Sheet1", "B21", "A win/loss sparkline with negative points highlighted.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A21"}, Range: []string{"Sheet3!A3:J3"}, @@ -150,7 +150,7 @@ func TestAddSparkline(t *testing.T) { Negative: true, })) - f.SetCellValue("Sheet1", "B23", "A left to right column (the default).") + assert.NoError(t, f.SetCellValue("Sheet1", "B23", "A left to right column (the default).")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A23"}, Range: []string{"Sheet3!A4:J4"}, @@ -158,7 +158,7 @@ func TestAddSparkline(t *testing.T) { Style: 20, })) - f.SetCellValue("Sheet1", "B24", "A right to left column.") + assert.NoError(t, f.SetCellValue("Sheet1", "B24", "A right to left column.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A24"}, Range: []string{"Sheet3!A4:J4"}, @@ -167,16 +167,16 @@ func TestAddSparkline(t *testing.T) { Reverse: true, })) - f.SetCellValue("Sheet1", "B25", "Sparkline and text in one cell.") + assert.NoError(t, f.SetCellValue("Sheet1", "B25", "Sparkline and text in one cell.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A25"}, Range: []string{"Sheet3!A4:J4"}, Type: "column", Style: 20, })) - f.SetCellValue("Sheet1", "A25", "Growth") + assert.NoError(t, f.SetCellValue("Sheet1", "A25", "Growth")) - f.SetCellValue("Sheet1", "B27", "A grouped sparkline. Changes are applied to all three.") + assert.NoError(t, f.SetCellValue("Sheet1", "B27", "A grouped sparkline. Changes are applied to all three.")) assert.NoError(t, f.AddSparkline("Sheet1", &SparklineOption{ Location: []string{"A27", "A28", "A29"}, Range: []string{"Sheet3!A5:J5", "Sheet3!A6:J6", "Sheet3!A7:J7"}, @@ -297,10 +297,14 @@ func prepareSparklineDataset() *File { f.NewSheet("Sheet2") f.NewSheet("Sheet3") for row, data := range sheet2 { - f.SetSheetRow("Sheet2", fmt.Sprintf("A%d", row+1), &data) + if err := f.SetSheetRow("Sheet2", fmt.Sprintf("A%d", row+1), &data); err != nil { + panic(err) + } } for row, data := range sheet3 { - f.SetSheetRow("Sheet3", fmt.Sprintf("A%d", row+1), &data) + if err := f.SetSheetRow("Sheet3", fmt.Sprintf("A%d", row+1), &data); err != nil { + panic(err) + } } return f } -- cgit v1.2.1 From 5ca7231ed408ac264f509ff52b5d28ff4fbda757 Mon Sep 17 00:00:00 2001 From: xuri Date: Fri, 3 Jan 2020 23:57:25 +0800 Subject: optimize code and comments: use println errors instead of panic --- sparkline_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sparkline_test.go') diff --git a/sparkline_test.go b/sparkline_test.go index dca32e9..45bf386 100644 --- a/sparkline_test.go +++ b/sparkline_test.go @@ -298,12 +298,12 @@ func prepareSparklineDataset() *File { f.NewSheet("Sheet3") for row, data := range sheet2 { if err := f.SetSheetRow("Sheet2", fmt.Sprintf("A%d", row+1), &data); err != nil { - panic(err) + println(err.Error()) } } for row, data := range sheet3 { if err := f.SetSheetRow("Sheet3", fmt.Sprintf("A%d", row+1), &data); err != nil { - panic(err) + println(err.Error()) } } return f -- cgit v1.2.1 From ad883caa0f77dfc016ae99bd5fbb606953eb99a0 Mon Sep 17 00:00:00 2001 From: xuri Date: Wed, 19 Feb 2020 00:08:10 +0800 Subject: Resolve #580, revert commit https://github.com/360EntSecGroup-Skylar/excelize/commit/5ca7231ed408ac264f509ff52b5d28ff4fbda757 --- sparkline_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sparkline_test.go') diff --git a/sparkline_test.go b/sparkline_test.go index 45bf386..4b059ab 100644 --- a/sparkline_test.go +++ b/sparkline_test.go @@ -298,12 +298,12 @@ func prepareSparklineDataset() *File { f.NewSheet("Sheet3") for row, data := range sheet2 { if err := f.SetSheetRow("Sheet2", fmt.Sprintf("A%d", row+1), &data); err != nil { - println(err.Error()) + fmt.Println(err) } } for row, data := range sheet3 { if err := f.SetSheetRow("Sheet3", fmt.Sprintf("A%d", row+1), &data); err != nil { - println(err.Error()) + fmt.Println(err) } } return f -- cgit v1.2.1