summaryrefslogtreecommitdiff
path: root/styles.go
diff options
context:
space:
mode:
authorMartin Sandve Alnæs <martin.alnes@gmail.com>2018-01-29 10:38:33 +0100
committerMartin Sandve Alnæs <martin.alnes@gmail.com>2018-01-29 12:39:06 +0100
commite556c25047a887d41c97ef9df7941ba585ba852b (patch)
tree1c0a9407ff102b678b415f5c0549d404bb08003a /styles.go
parent6f4e4d9ef1be030a05f48aa5dda900f2dc9cb851 (diff)
Avoid looping over unused rows and columns in SetCellStyle.
The recent improvement to SetCellStyle still loops over all the rows before the area, moving the area checks into the loop is more concise and faster. Since the loop now covers the correct area by construction, the inner loop check checkCellInArea is no longer needed.
Diffstat (limited to 'styles.go')
-rw-r--r--styles.go25
1 files changed, 4 insertions, 21 deletions
diff --git a/styles.go b/styles.go
index 8cee5ff..7321c18 100644
--- a/styles.go
+++ b/styles.go
@@ -2307,6 +2307,7 @@ func (f *File) SetCellStyle(sheet, hcell, vcell string, styleID int) {
vyAxis := vrow - 1
vxAxis := TitleToNumber(vcol)
+ // Correct the coordinate area, such correct C1:B3 to B1:C3.
if vxAxis < hxAxis {
hcell, vcell = vcell, hcell
vxAxis, hxAxis = hxAxis, vxAxis
@@ -2317,32 +2318,14 @@ func (f *File) SetCellStyle(sheet, hcell, vcell string, styleID int) {
vyAxis, hyAxis = hyAxis, vyAxis
}
- // Correct the coordinate area, such correct C1:B3 to B1:C3.
- hcell = ToAlphaString(hxAxis) + strconv.Itoa(hyAxis+1)
- vcell = ToAlphaString(vxAxis) + strconv.Itoa(vyAxis+1)
-
xlsx := f.workSheetReader(sheet)
completeRow(xlsx, vyAxis+1, vxAxis+1)
completeCol(xlsx, vyAxis+1, vxAxis+1)
- for r, row := range xlsx.SheetData.Row {
- if r < hyAxis {
- continue
- } else if r > vyAxis {
- break
- }
-
- for k, c := range row.C {
- if k < hxAxis {
- continue
- } else if k > vxAxis {
- break
- }
-
- if checkCellInArea(c.R, hcell+":"+vcell) {
- xlsx.SheetData.Row[r].C[k].S = styleID
- }
+ for r := hyAxis; r <= vyAxis; r++ {
+ for k := hxAxis; k <= vxAxis; k++ {
+ xlsx.SheetData.Row[r].C[k].S = styleID
}
}
}