Merge pull request #184 from martinal/speedup-setcellstyle-more
Speedup `SetCellStyle()` more.
This commit is contained in:
commit
12760a7ee6
25
styles.go
25
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue