summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRi Xu <xuri.me@gmail.com>2017-09-19 11:59:33 +0800
committerRi Xu <xuri.me@gmail.com>2017-09-19 11:59:33 +0800
commite820388d70da551cacdf3212b559d597a6fdbec8 (patch)
tree4a016dec961ee4b666126696f91438fef21e3851
parentb7b937a8a3e1e92669aaf63d2cc97dc2fc865736 (diff)
Handle coordinate parse exception, relate issue #122.
-rw-r--r--cell.go35
-rw-r--r--excelize_test.go25
-rw-r--r--styles.go10
3 files changed, 57 insertions, 13 deletions
diff --git a/cell.go b/cell.go
index d0f747a..af98cf0 100644
--- a/cell.go
+++ b/cell.go
@@ -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)
diff --git a/styles.go b/styles.go
index ee0fbc2..c20bd82 100644
--- a/styles.go
+++ b/styles.go
@@ -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)