summaryrefslogtreecommitdiff
path: root/cell.go
diff options
context:
space:
mode:
authorCooper de Nicola <cdenicol@stanford.edu>2022-08-24 18:34:29 -0700
committerGitHub <noreply@github.com>2022-08-25 09:34:29 +0800
commit0e9378fec2ab4ba60ed284db4383df86555076d1 (patch)
tree39e3f2eac3a4c135c52f25d740fdb9b20bd60f13 /cell.go
parentcb8bca0e92cbec30db10c2a2863ef81fd98a6138 (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.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/cell.go b/cell.go
index 214f5c6..dd6b169 100644
--- a/cell.go
+++ b/cell.go
@@ -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 {