diff options
author | Cooper de Nicola <cdenicol@stanford.edu> | 2022-08-24 18:34:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-25 09:34:29 +0800 |
commit | 0e9378fec2ab4ba60ed284db4383df86555076d1 (patch) | |
tree | 39e3f2eac3a4c135c52f25d740fdb9b20bd60f13 /cell.go | |
parent | cb8bca0e92cbec30db10c2a2863ef81fd98a6138 (diff) |
This closes #1247, add new function `SetSheetCol` for set worksheet column values (#1320)
Signed-off-by: cdenicola <cooper.denicola@instabase.com>
Co-authored-by: cdenicola <cooper.denicola@instabase.com>
Diffstat (limited to 'cell.go')
-rw-r--r-- | cell.go | 24 |
1 files changed, 21 insertions, 3 deletions
@@ -1052,20 +1052,38 @@ func (f *File) SetCellRichText(sheet, cell string, runs []RichTextRun) error { // // err := f.SetSheetRow("Sheet1", "B6", &[]interface{}{"1", nil, 2}) func (f *File) SetSheetRow(sheet, axis string, slice interface{}) error { + return f.setSheetCells(sheet, axis, slice, rows) +} + +// SetSheetCol writes an array to column by given worksheet name, starting +// coordinate and a pointer to array type 'slice'. For example, writes an +// array to column B start with the cell B6 on Sheet1: +// +// err := f.SetSheetCol("Sheet1", "B6", &[]interface{}{"1", nil, 2}) +func (f *File) SetSheetCol(sheet, axis string, slice interface{}) error { + return f.setSheetCells(sheet, axis, slice, columns) +} + +// setSheetCells provides a function to set worksheet cells value. +func (f *File) setSheetCells(sheet, axis string, slice interface{}, dir adjustDirection) error { col, row, err := CellNameToCoordinates(axis) if err != nil { return err } - // Make sure 'slice' is a Ptr to Slice v := reflect.ValueOf(slice) if v.Kind() != reflect.Ptr || v.Elem().Kind() != reflect.Slice { return ErrParameterInvalid } v = v.Elem() - for i := 0; i < v.Len(); i++ { - cell, err := CoordinatesToCellName(col+i, row) + var cell string + var err error + if dir == rows { + cell, err = CoordinatesToCellName(col+i, row) + } else { + cell, err = CoordinatesToCellName(col, row+i) + } // Error should never happen here. But keep checking to early detect regressions // if it will be introduced in the future. if err != nil { |