summaryrefslogtreecommitdiff
path: root/cell.go
diff options
context:
space:
mode:
Diffstat (limited to 'cell.go')
-rw-r--r--cell.go102
1 files changed, 66 insertions, 36 deletions
diff --git a/cell.go b/cell.go
index f9bf174..6a8eebe 100644
--- a/cell.go
+++ b/cell.go
@@ -69,63 +69,67 @@ func (f *File) GetCellValue(sheet, axis string) (string, error) {
// Note that default date format is m/d/yy h:mm of time.Time type value. You can
// set numbers format by SetCellStyle() method.
func (f *File) SetCellValue(sheet, axis string, value interface{}) error {
+ var err error
switch v := value.(type) {
case int:
- f.SetCellInt(sheet, axis, v)
+ err = f.SetCellInt(sheet, axis, v)
case int8:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case int16:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case int32:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case int64:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case uint:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case uint8:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case uint16:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case uint32:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case uint64:
- f.SetCellInt(sheet, axis, int(v))
+ err = f.SetCellInt(sheet, axis, int(v))
case float32:
- f.SetCellFloat(sheet, axis, float64(v), -1, 32)
+ err = f.SetCellFloat(sheet, axis, float64(v), -1, 32)
case float64:
- f.SetCellFloat(sheet, axis, v, -1, 64)
+ err = f.SetCellFloat(sheet, axis, v, -1, 64)
case string:
- f.SetCellStr(sheet, axis, v)
+ err = f.SetCellStr(sheet, axis, v)
case []byte:
- f.SetCellStr(sheet, axis, string(v))
+ err = f.SetCellStr(sheet, axis, string(v))
case time.Duration:
- f.SetCellDefault(sheet, axis, strconv.FormatFloat(v.Seconds()/86400.0, 'f', -1, 32))
- f.setDefaultTimeStyle(sheet, axis, 21)
+ err = f.SetCellDefault(sheet, axis, strconv.FormatFloat(v.Seconds()/86400.0, 'f', -1, 32))
+ err = f.setDefaultTimeStyle(sheet, axis, 21)
case time.Time:
excelTime, err := timeToExcelTime(v)
if err != nil {
return err
}
if excelTime > 0 {
- f.SetCellDefault(sheet, axis, strconv.FormatFloat(excelTime, 'f', -1, 64))
- f.setDefaultTimeStyle(sheet, axis, 22)
+ err = f.SetCellDefault(sheet, axis, strconv.FormatFloat(excelTime, 'f', -1, 64))
+ err = f.setDefaultTimeStyle(sheet, axis, 22)
} else {
- f.SetCellStr(sheet, axis, v.Format(time.RFC3339Nano))
+ err = f.SetCellStr(sheet, axis, v.Format(time.RFC3339Nano))
}
case bool:
- f.SetCellBool(sheet, axis, v)
+ err = f.SetCellBool(sheet, axis, v)
case nil:
- f.SetCellStr(sheet, axis, "")
+ err = f.SetCellStr(sheet, axis, "")
default:
- f.SetCellStr(sheet, axis, fmt.Sprintf("%v", value))
+ err = f.SetCellStr(sheet, axis, fmt.Sprintf("%v", value))
}
- return nil
+ return err
}
// SetCellInt provides a function to set int type value of a cell by given
// worksheet name, cell coordinates and cell value.
func (f *File) SetCellInt(sheet, axis string, value int) error {
- xlsx := f.workSheetReader(sheet)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return err
+ }
cellData, col, _, err := f.prepareCell(xlsx, sheet, axis)
if err != nil {
return err
@@ -139,7 +143,10 @@ func (f *File) SetCellInt(sheet, axis string, value int) error {
// SetCellBool provides a function to set bool type value of a cell by given
// worksheet name, cell name and cell value.
func (f *File) SetCellBool(sheet, axis string, value bool) error {
- xlsx := f.workSheetReader(sheet)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return err
+ }
cellData, col, _, err := f.prepareCell(xlsx, sheet, axis)
if err != nil {
return err
@@ -164,7 +171,10 @@ func (f *File) SetCellBool(sheet, axis string, value bool) error {
// f.SetCellFloat("Sheet1", "A1", float64(x), 2, 32)
//
func (f *File) SetCellFloat(sheet, axis string, value float64, prec, bitSize int) error {
- xlsx := f.workSheetReader(sheet)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return err
+ }
cellData, col, _, err := f.prepareCell(xlsx, sheet, axis)
if err != nil {
return err
@@ -178,7 +188,10 @@ func (f *File) SetCellFloat(sheet, axis string, value float64, prec, bitSize int
// SetCellStr provides a function to set string type value of a cell. Total
// number of characters that a cell can contain 32767 characters.
func (f *File) SetCellStr(sheet, axis, value string) error {
- xlsx := f.workSheetReader(sheet)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return err
+ }
cellData, col, _, err := f.prepareCell(xlsx, sheet, axis)
if err != nil {
return err
@@ -203,7 +216,10 @@ func (f *File) SetCellStr(sheet, axis, value string) error {
// SetCellDefault provides a function to set string type value of a cell as
// default format without escaping the cell.
func (f *File) SetCellDefault(sheet, axis, value string) error {
- xlsx := f.workSheetReader(sheet)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return err
+ }
cellData, col, _, err := f.prepareCell(xlsx, sheet, axis)
if err != nil {
return err
@@ -231,7 +247,10 @@ func (f *File) GetCellFormula(sheet, axis string) (string, error) {
// SetCellFormula provides a function to set cell formula by given string and
// worksheet name.
func (f *File) SetCellFormula(sheet, axis, formula string) error {
- xlsx := f.workSheetReader(sheet)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return err
+ }
cellData, _, _, err := f.prepareCell(xlsx, sheet, axis)
if err != nil {
return err
@@ -264,8 +283,11 @@ func (f *File) GetCellHyperLink(sheet, axis string) (bool, string, error) {
return false, "", err
}
- xlsx := f.workSheetReader(sheet)
- axis, err := f.mergeCellsParser(xlsx, axis)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return false, "", err
+ }
+ axis, err = f.mergeCellsParser(xlsx, axis)
if err != nil {
return false, "", err
}
@@ -302,8 +324,11 @@ func (f *File) SetCellHyperLink(sheet, axis, link, linkType string) error {
return err
}
- xlsx := f.workSheetReader(sheet)
- axis, err := f.mergeCellsParser(xlsx, axis)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return err
+ }
+ axis, err = f.mergeCellsParser(xlsx, axis)
if err != nil {
return err
}
@@ -367,7 +392,10 @@ func (f *File) MergeCell(sheet, hcell, vcell string) error {
hcell, _ = CoordinatesToCellName(hcol, hrow)
vcell, _ = CoordinatesToCellName(vcol, vrow)
- xlsx := f.workSheetReader(sheet)
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return err
+ }
if xlsx.MergeCells != nil {
ref := hcell + ":" + vcell
cells := make([]*xlsxMergeCell, 0, len(xlsx.MergeCells.Cells))
@@ -446,8 +474,10 @@ func (f *File) prepareCell(xlsx *xlsxWorksheet, sheet, cell string) (*xlsxC, int
// getCellStringFunc does common value extraction workflow for all GetCell*
// methods. Passed function implements specific part of required logic.
func (f *File) getCellStringFunc(sheet, axis string, fn func(x *xlsxWorksheet, c *xlsxC) (string, bool, error)) (string, error) {
- xlsx := f.workSheetReader(sheet)
- var err error
+ xlsx, err := f.workSheetReader(sheet)
+ if err != nil {
+ return "", err
+ }
axis, err = f.mergeCellsParser(xlsx, axis)
if err != nil {
return "", err