diff options
author | Ri Xu <xuri.me@gmail.com> | 2017-09-19 11:59:33 +0800 |
---|---|---|
committer | Ri Xu <xuri.me@gmail.com> | 2017-09-19 11:59:33 +0800 |
commit | e820388d70da551cacdf3212b559d597a6fdbec8 (patch) | |
tree | 4a016dec961ee4b666126696f91438fef21e3851 | |
parent | b7b937a8a3e1e92669aaf63d2cc97dc2fc865736 (diff) |
Handle coordinate parse exception, relate issue #122.
-rw-r--r-- | cell.go | 35 | ||||
-rw-r--r-- | excelize_test.go | 25 | ||||
-rw-r--r-- | styles.go | 10 |
3 files changed, 57 insertions, 13 deletions
@@ -76,7 +76,10 @@ func (f *File) SetCellValue(sheet, axis string, value interface{}) { func (f *File) GetCellValue(sheet, axis string) string { xlsx := f.workSheetReader(sheet) axis = f.mergeCellsParser(xlsx, axis) - row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + row, err := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + if err != nil { + return "" + } xAxis := row - 1 rows := len(xlsx.SheetData.Row) if rows > 1 { @@ -124,7 +127,10 @@ func (f *File) GetCellStyle(sheet, axis string) int { xlsx := f.workSheetReader(sheet) axis = f.mergeCellsParser(xlsx, axis) col := string(strings.Map(letterOnlyMapF, axis)) - row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + row, err := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + if err != nil { + return 0 + } xAxis := row - 1 yAxis := TitleToNumber(col) @@ -142,7 +148,10 @@ func (f *File) GetCellStyle(sheet, axis string) int { func (f *File) GetCellFormula(sheet, axis string) string { xlsx := f.workSheetReader(sheet) axis = f.mergeCellsParser(xlsx, axis) - row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + row, err := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + if err != nil { + return "" + } xAxis := row - 1 rows := len(xlsx.SheetData.Row) if rows > 1 { @@ -176,7 +185,10 @@ func (f *File) SetCellFormula(sheet, axis, formula string) { xlsx := f.workSheetReader(sheet) axis = f.mergeCellsParser(xlsx, axis) col := string(strings.Map(letterOnlyMapF, axis)) - row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + row, err := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + if err != nil { + return + } xAxis := row - 1 yAxis := TitleToNumber(col) @@ -326,7 +338,10 @@ func (f *File) SetCellInt(sheet, axis string, value int) { xlsx := f.workSheetReader(sheet) axis = f.mergeCellsParser(xlsx, axis) col := string(strings.Map(letterOnlyMapF, axis)) - row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + row, err := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + if err != nil { + return + } xAxis := row - 1 yAxis := TitleToNumber(col) @@ -363,7 +378,10 @@ func (f *File) SetCellStr(sheet, axis, value string) { value = value[0:32767] } col := string(strings.Map(letterOnlyMapF, axis)) - row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + row, err := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + if err != nil { + return + } xAxis := row - 1 yAxis := TitleToNumber(col) @@ -393,7 +411,10 @@ func (f *File) SetCellDefault(sheet, axis, value string) { xlsx := f.workSheetReader(sheet) axis = f.mergeCellsParser(xlsx, axis) col := string(strings.Map(letterOnlyMapF, axis)) - row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + row, err := strconv.Atoi(strings.Map(intOnlyMapF, axis)) + if err != nil { + return + } xAxis := row - 1 yAxis := TitleToNumber(col) diff --git a/excelize_test.go b/excelize_test.go index 8240dbb..5c14c52 100644 --- a/excelize_test.go +++ b/excelize_test.go @@ -31,9 +31,12 @@ func TestOpenFile(t *testing.T) { 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)) + // Test set cell value with illegal row number. + xlsx.SetCellDefault("Sheet2", "A", strconv.FormatFloat(float64(-100.1588), 'f', -1, 64)) xlsx.SetCellInt("Sheet2", "A1", 100) + // Test set cell integer value with illegal row number. + xlsx.SetCellInt("Sheet2", "A", 100) xlsx.SetCellStr("Sheet2", "C11", "Knowns") - // Test max characters in a cell. xlsx.SetCellStr("Sheet2", "D11", strings.Repeat("c", 32769)) xlsx.NewSheet(":\\/?*[]Maximum 31 characters allowed in sheet title.") @@ -42,12 +45,19 @@ func TestOpenFile(t *testing.T) { xlsx.SetCellInt("Sheet3", "A23", 10) xlsx.SetCellStr("Sheet3", "b230", "10") xlsx.SetCellStr("Sheet10", "b230", "10") + // Test set cell string value with illegal row number. + xlsx.SetCellStr("Sheet10", "A", "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 worksheet index. - xlsx.GetCellFormula("Sheet1", "B20") // Test get cell formula with illegal rows number. + // Test get cell formula with given rows number. + xlsx.GetCellFormula("Sheet1", "B19") + // Test get cell formula with illegal worksheet index. + xlsx.GetCellFormula("Sheet2", "B20") + // Test get cell formula with illegal rows number. + xlsx.GetCellFormula("Sheet1", "B20") + xlsx.GetCellFormula("Sheet1", "B") // Test read cell value with given illegal rows number. xlsx.GetCellValue("Sheet2", "a-1") + xlsx.GetCellValue("Sheet2", "A") // Test read cell value with given lowercase column number. xlsx.GetCellValue("Sheet2", "a5") xlsx.GetCellValue("Sheet2", "C11") @@ -245,6 +255,8 @@ func TestSetCellFormula(t *testing.T) { } xlsx.SetCellFormula("Sheet1", "B19", "SUM(Sheet2!D2,Sheet2!D11)") xlsx.SetCellFormula("Sheet1", "C19", "SUM(Sheet2!D2,Sheet2!D9)") + // Test set cell formula with illegal rows number. + xlsx.SetCellFormula("Sheet1", "C", "SUM(Sheet2!D2,Sheet2!D9)") err = xlsx.Save() if err != nil { t.Log(err) @@ -315,6 +327,11 @@ func TestSetCellStyleAlignment(t *testing.T) { t.Log(err) } xlsx.SetCellStyle("Sheet1", "A22", "A22", style) + // Test set cell style with given illegal rows number. + xlsx.SetCellStyle("Sheet1", "A", "A22", style) + xlsx.SetCellStyle("Sheet1", "A22", "A", style) + // Test get cell style with given illegal rows number. + xlsx.GetCellStyle("Sheet1", "A") err = xlsx.Save() if err != nil { t.Log(err) @@ -2279,12 +2279,18 @@ func (f *File) SetCellStyle(sheet, hcell, vcell string, styleID int) { // Coordinate conversion, convert C1:B3 to 2,0,1,2. hcol := string(strings.Map(letterOnlyMapF, hcell)) - hrow, _ := strconv.Atoi(strings.Map(intOnlyMapF, hcell)) + hrow, err := strconv.Atoi(strings.Map(intOnlyMapF, hcell)) + if err != nil { + return + } hyAxis := hrow - 1 hxAxis := TitleToNumber(hcol) vcol := string(strings.Map(letterOnlyMapF, vcell)) - vrow, _ := strconv.Atoi(strings.Map(intOnlyMapF, vcell)) + vrow, err := strconv.Atoi(strings.Map(intOnlyMapF, vcell)) + if err != nil { + return + } vyAxis := vrow - 1 vxAxis := TitleToNumber(vcol) |