Browse Source

Make String() return just string, and use FormattedValue when an error is required.

Geoffrey J. Teale 8 years ago
parent
commit
0fdea326a7
7 changed files with 49 additions and 43 deletions
  1. 9 3
      cell.go
  2. 2 2
      cell_test.go
  3. 6 6
      compatibility_test.go
  4. 1 1
      file.go
  5. 10 10
      file_test.go
  6. 14 14
      lib_test.go
  7. 7 7
      write_test.go

+ 9 - 3
cell.go

@@ -67,9 +67,15 @@ func (c *Cell) SetString(s string) {
 	c.cellType = CellTypeString
 }
 
-// String returns the value of a Cell as a string.
-func (c *Cell) String() (string, error) {
-	return c.FormattedValue()
+// String returns the value of a Cell as a string.  If you'd like to
+// see errors returned from formatting then please use
+// Cell.FormattedValue() instead.
+func (c *Cell) String() string {
+	// To preserve the String() interface we'll throw away errors.
+	// Not that using FormattedValue is therefore strongly
+	// preferred.
+	value, _ := c.FormattedValue()
+	return value
 }
 
 // SetFloat sets the value of a cell to a float.

+ 2 - 2
cell_test.go

@@ -392,7 +392,7 @@ func (s *CellSuite) TestSetterGetters(c *C) {
 	cell := Cell{}
 
 	cell.SetString("hello world")
-	if val, err := cell.String(); err != nil {
+	if val, err := cell.FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "hello world")
@@ -433,7 +433,7 @@ func (s *CellSuite) TestOddInput(c *C) {
 	odd := `[1],[12,"DATE NOT NULL DEFAULT '0000-00-00'"]`
 	cell.Value = odd
 	cell.NumFmt = "@"
-	if val, err := cell.String(); err != nil {
+	if val, err := cell.FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, odd)

+ 6 - 6
compatibility_test.go

@@ -26,7 +26,7 @@ func (m *MacExcelSuite) TestMacExcel(c *C) {
 	xlsxFile, err := OpenFile("./testdocs/macExcelTest.xlsx")
 	c.Assert(err, IsNil)
 	c.Assert(xlsxFile, NotNil)
-	if val, err := xlsxFile.Sheet["普通技能"].Cell(0, 0).String(); err != nil {
+	if val, err := xlsxFile.Sheet["普通技能"].Cell(0, 0).FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "编号")
@@ -45,7 +45,7 @@ func (m *MacNumbersSuite) TestMacNumbers(c *C) {
 	c.Assert(xlsxFile, NotNil)
 	sheet, ok := xlsxFile.Sheet["主动技能"]
 	c.Assert(ok, Equals, true)
-	if val, err := sheet.Cell(0, 0).String(); err != nil {
+	if val, err := sheet.Cell(0, 0).FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "编号")
@@ -69,26 +69,26 @@ func (w *WpsBlankLineSuite) TestWpsBlankLine(c *C) {
 	expected := "编号"
 	var val string
 
-	if val, err = cell.String(); err != nil {
+	if val, err = cell.FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	c.Assert(val, Equals, expected)
 
 	row = sheet.Rows[2]
 	cell = row.Cells[0]
-	if val, err = cell.String(); err != nil {
+	if val, err = cell.FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	c.Assert(val, Equals, expected)
 
 	row = sheet.Rows[4]
 	cell = row.Cells[1]
-	if val, err = cell.String(); err != nil {
+	if val, err = cell.FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	c.Assert(val, Equals, "")
 
-	if val, err = sheet.Rows[4].Cells[2].String(); err != nil {
+	if val, err = sheet.Rows[4].Cells[2].FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	c.Assert(val, Equals, expected)

+ 1 - 1
file.go

@@ -312,7 +312,7 @@ func (file *File) ToSlice() (output [][][]string, err error) {
 			}
 			r := []string{}
 			for _, cell := range row.Cells {
-				str, err := cell.String()
+				str, err := cell.FormattedValue()
 				if err != nil {
 					// Recover from strconv.NumError if the value is an empty string,
 					// and insert an empty string in the output.

+ 10 - 10
file_test.go

@@ -171,7 +171,7 @@ func (l *FileSuite) TestGetStyleFromZipFile(c *C) {
 	row0 := tabelle1.Rows[0]
 	cellFoo := row0.Cells[0]
 	style = cellFoo.GetStyle()
-	if val, err = cellFoo.String(); err != nil {
+	if val, err = cellFoo.FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	c.Assert(val, Equals, "Foo")
@@ -182,7 +182,7 @@ func (l *FileSuite) TestGetStyleFromZipFile(c *C) {
 	row1 := tabelle1.Rows[1]
 	cellQuuk := row1.Cells[1]
 	style = cellQuuk.GetStyle()
-	if val, err = cellQuuk.String(); err != nil {
+	if val, err = cellQuuk.FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	c.Assert(val, Equals, "Quuk")
@@ -190,7 +190,7 @@ func (l *FileSuite) TestGetStyleFromZipFile(c *C) {
 	c.Assert(style.ApplyBorder, Equals, true)
 
 	cellBar := row0.Cells[1]
-	if val, err = cellBar.String(); err != nil {
+	if val, err = cellBar.FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	c.Assert(val, Equals, "Bar")
@@ -224,7 +224,7 @@ func (l *FileSuite) TestCreateSheet(c *C) {
 	row = sheet.Rows[0]
 	c.Assert(len(row.Cells), Equals, 2)
 	cell := row.Cells[0]
-	if val, err := cell.String(); err != nil {
+	if val, err := cell.FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "Foo")
@@ -802,7 +802,7 @@ func (l *FileSuite) TestReadWorkbookWithTypes(c *C) {
 
 	// string 1
 	c.Assert(sheet.Rows[0].Cells[0].Type(), Equals, CellTypeString)
-	if val, err := sheet.Rows[0].Cells[0].String(); err != nil {
+	if val, err := sheet.Rows[0].Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "hello world")
@@ -810,7 +810,7 @@ func (l *FileSuite) TestReadWorkbookWithTypes(c *C) {
 
 	// string 2
 	c.Assert(sheet.Rows[1].Cells[0].Type(), Equals, CellTypeString)
-	if val, err := sheet.Rows[1].Cells[0].String(); err != nil {
+	if val, err := sheet.Rows[1].Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "日本語")
@@ -852,12 +852,12 @@ func (s *SliceReaderSuite) TestFileWithEmptyRows(c *C) {
 	sheet, ok := f.Sheet["EmptyRows"]
 	c.Assert(ok, Equals, true)
 
-	if val, err := sheet.Cell(0, 0).String(); err != nil {
+	if val, err := sheet.Cell(0, 0).FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "")
 	}
-	if val, err := sheet.Cell(2, 0).String(); err != nil {
+	if val, err := sheet.Cell(2, 0).FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "A3")
@@ -870,12 +870,12 @@ func (s *SliceReaderSuite) TestFileWithEmptyCols(c *C) {
 	sheet, ok := f.Sheet["EmptyCols"]
 	c.Assert(ok, Equals, true)
 
-	if val, err := sheet.Cell(0, 0).String(); err != nil {
+	if val, err := sheet.Cell(0, 0).FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "")
 	}
-	if val, err := sheet.Cell(0, 2).String(); err != nil {
+	if val, err := sheet.Cell(0, 2).FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "C1")

+ 14 - 14
lib_test.go

@@ -39,7 +39,7 @@ func (l *LibSuite) TestReadWorkbookRelationsFromZipFileWithFunnyNames(c *C) {
 	bob := xlsxFile.Sheet["Bob"]
 	row1 := bob.Rows[0]
 	cell1 := row1.Cells[0]
-	if val, err := cell1.String(); err != nil {
+	if val, err := cell1.FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "I am Bob")
@@ -534,13 +534,13 @@ func (l *LibSuite) TestReadRowsFromSheetWithLeadingEmptyRows(c *C) {
 	c.Assert(len(rows[1].Cells), Equals, 0)
 	c.Assert(len(rows[2].Cells), Equals, 0)
 	c.Assert(len(rows[3].Cells), Equals, 1)
-	if val, err := rows[3].Cells[0].String(); err != nil {
+	if val, err := rows[3].Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "ABC")
 	}
 	c.Assert(len(rows[4].Cells), Equals, 1)
-	if val, err := rows[4].Cells[0].String(); err != nil {
+	if val, err := rows[4].Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "DEF")
@@ -597,43 +597,43 @@ func (l *LibSuite) TestReadRowsFromSheetWithLeadingEmptyCols(c *C) {
 	c.Assert(maxCols, Equals, 4)
 
 	c.Assert(len(rows[0].Cells), Equals, 4)
-	if val, err := rows[0].Cells[0].String(); err != nil {
+	if val, err := rows[0].Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "")
 	}
-	if val, err := rows[0].Cells[1].String(); err != nil {
+	if val, err := rows[0].Cells[1].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "")
 	}
-	if val, err := rows[0].Cells[2].String(); err != nil {
+	if val, err := rows[0].Cells[2].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "ABC")
 	}
-	if val, err := rows[0].Cells[3].String(); err != nil {
+	if val, err := rows[0].Cells[3].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "DEF")
 	}
 	c.Assert(len(rows[1].Cells), Equals, 4)
-	if val, err := rows[1].Cells[0].String(); err != nil {
+	if val, err := rows[1].Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "")
 	}
-	if val, err := rows[1].Cells[1].String(); err != nil {
+	if val, err := rows[1].Cells[1].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "")
 	}
-	if val, err := rows[1].Cells[2].String(); err != nil {
+	if val, err := rows[1].Cells[2].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "ABC")
 	}
-	if val, err := rows[1].Cells[3].String(); err != nil {
+	if val, err := rows[1].Cells[3].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "DEF")
@@ -969,7 +969,7 @@ func (l *LibSuite) TestReadRowsFromSheetWithMultipleTypes(c *C) {
 
 	cell1 := row.Cells[0]
 	c.Assert(cell1.Type(), Equals, CellTypeString)
-	if val, err := cell1.String(); err != nil {
+	if val, err := cell1.FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "Hello World")
@@ -1042,7 +1042,7 @@ func (l *LibSuite) TestReadRowsFromSheetWithHiddenColumn(c *C) {
 
 	cell1 := row.Cells[0]
 	c.Assert(cell1.Type(), Equals, CellTypeString)
-	if val, err := cell1.String(); err != nil {
+	if val, err := cell1.FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "This is a test.")
@@ -1051,7 +1051,7 @@ func (l *LibSuite) TestReadRowsFromSheetWithHiddenColumn(c *C) {
 
 	cell2 := row.Cells[1]
 	c.Assert(cell2.Type(), Equals, CellTypeString)
-	if val, err := cell2.String(); err != nil {
+	if val, err := cell2.FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "This should be invisible.")

+ 7 - 7
write_test.go

@@ -52,16 +52,16 @@ func (r *RowSuite) TestWriteStruct(c *C) {
 		err        error
 		c6         float64
 	)
-	if c0, err = row.Cells[0].String(); err != nil {
+	if c0, err = row.Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	c1, e1 := row.Cells[1].Int()
 	c2, e2 := row.Cells[2].Float()
 	c3 := row.Cells[3].Bool()
-	if c4, err = row.Cells[4].String(); err != nil {
+	if c4, err = row.Cells[4].FormattedValue(); err != nil {
 		c.Error(err)
 	}
-	if c5, err = row.Cells[5].String(); err != nil {
+	if c5, err = row.Cells[5].FormattedValue(); err != nil {
 		c.Error(err)
 	}
 	if c6, err = row.Cells[6].Float(); err != nil {
@@ -99,7 +99,7 @@ func (r *RowSuite) TestWriteSlice(c *C) {
 	row0.WriteSlice(&s0, -1)
 	c.Assert(row0, NotNil)
 
-	if val, err := row0.Cells[0].String(); err != nil {
+	if val, err := row0.Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "Eric")
@@ -132,7 +132,7 @@ func (r *RowSuite) TestWriteSlice(c *C) {
 	row4 := sheet.AddRow()
 	row4.WriteSlice(&s4, -1)
 	c.Assert(row4, NotNil)
-	if val, err := row4.Cells[0].String(); err != nil {
+	if val, err := row4.Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "Eric")
@@ -155,7 +155,7 @@ func (r *RowSuite) TestWriteSlice(c *C) {
 	row5.WriteSlice(&s5, -1)
 	c.Assert(row5, NotNil)
 
-	if val, err := row5.Cells[0].String(); err != nil {
+	if val, err := row5.Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "Stringer")
@@ -166,7 +166,7 @@ func (r *RowSuite) TestWriteSlice(c *C) {
 	row6.WriteSlice(&s6, -1)
 	c.Assert(row6, NotNil)
 
-	if val, err := row6.Cells[0].String(); err != nil {
+	if val, err := row6.Cells[0].FormattedValue(); err != nil {
 		c.Error(err)
 	} else {
 		c.Assert(val, Equals, "Pointer to Stringer")