summaryrefslogtreecommitdiff
path: root/sheet.go
diff options
context:
space:
mode:
Diffstat (limited to 'sheet.go')
-rw-r--r--sheet.go29
1 files changed, 19 insertions, 10 deletions
diff --git a/sheet.go b/sheet.go
index 72d8921..5c681d2 100644
--- a/sheet.go
+++ b/sheet.go
@@ -1072,8 +1072,8 @@ func (f *File) workSheetRelsWriter() {
}
}
-// fillSheetData fill missing row and cell XML data to made it continuous from
-// first cell [1, 1] to last cell [col, row]
+// fillSheetData ensures there are enough rows, and columns in the chosen
+// row to accept data. Missing rows are backfilled and given their row number
func prepareSheetXML(xlsx *xlsxWorksheet, col int, row int) {
rowCount := len(xlsx.SheetData.Row)
if rowCount < row {
@@ -1082,14 +1082,23 @@ func prepareSheetXML(xlsx *xlsxWorksheet, col int, row int) {
xlsx.SheetData.Row = append(xlsx.SheetData.Row, xlsxRow{R: rowIdx + 1})
}
}
- for rowIdx := range xlsx.SheetData.Row {
- rowData := &xlsx.SheetData.Row[rowIdx] // take reference
- cellCount := len(rowData.C)
- if cellCount < col {
- for colIdx := cellCount; colIdx < col; colIdx++ {
- cellName, _ := CoordinatesToCellName(colIdx+1, rowIdx+1)
- rowData.C = append(rowData.C, xlsxC{R: cellName})
- }
+ rowData := &xlsx.SheetData.Row[row-1]
+ fillColumns(rowData, col, row)
+}
+
+func fillColumns(rowData *xlsxRow, col, row int) {
+ cellCount := len(rowData.C)
+ if cellCount < col {
+ for colIdx := cellCount; colIdx < col; colIdx++ {
+ cellName, _ := CoordinatesToCellName(colIdx+1, row)
+ rowData.C = append(rowData.C, xlsxC{R: cellName})
}
}
}
+
+func makeContiguousColumns(xlsx *xlsxWorksheet, fromRow, toRow, colCount int) {
+ for ; fromRow < toRow; fromRow++ {
+ rowData := &xlsx.SheetData.Row[fromRow-1]
+ fillColumns(rowData, colCount, fromRow)
+ }
+}