diff options
Diffstat (limited to 'styles.go')
-rw-r--r-- | styles.go | 44 |
1 files changed, 29 insertions, 15 deletions
@@ -224,6 +224,26 @@ func parseTime(i int, v string) string { return val.Format(format) } +// stylesReader provides function to get the pointer to the structure after +// deserialization of workbook. +func (f *File) stylesReader() *xlsxStyleSheet { + if f.Styles == nil { + var styleSheet xlsxStyleSheet + xml.Unmarshal([]byte(f.readXML("xl/styles.xml")), &styleSheet) + f.Styles = &styleSheet + } + return f.Styles +} + +// styleSheetWriter provides function to save xl/styles.xml after serialize +// structure. +func (f *File) styleSheetWriter() { + if f.Styles != nil { + output, _ := xml.Marshal(f.Styles) + f.saveFileList("xl/styles.xml", replaceWorkSheetsRelationshipsNameSpace(string(output))) + } +} + // parseFormatStyleSet provides function to parse the format settings of the // borders. func parseFormatStyleSet(style string) (*formatCellStyle, error) { @@ -500,23 +520,17 @@ func parseFormatStyleSet(style string) (*formatCellStyle, error) { // +-------+----------------------------------------------------+ // func (f *File) SetCellStyle(sheet, hcell, vcell, style string) error { - var styleSheet xlsxStyleSheet - xml.Unmarshal([]byte(f.readXML("xl/styles.xml")), &styleSheet) + styleSheet := f.stylesReader() formatCellStyle, err := parseFormatStyleSet(style) if err != nil { return err } - numFmtID := setNumFmt(&styleSheet, formatCellStyle) - fontID := setFont(&styleSheet, formatCellStyle) - borderID := setBorders(&styleSheet, formatCellStyle) - fillID := setFills(&styleSheet, formatCellStyle) - applyAlignment, alignment := setAlignment(&styleSheet, formatCellStyle) - cellXfsID := setCellXfs(&styleSheet, fontID, numFmtID, fillID, borderID, applyAlignment, alignment) - output, err := xml.Marshal(styleSheet) - if err != nil { - return err - } - f.saveFileList("xl/styles.xml", replaceWorkSheetsRelationshipsNameSpace(string(output))) + numFmtID := setNumFmt(styleSheet, formatCellStyle) + fontID := setFont(styleSheet, formatCellStyle) + borderID := setBorders(styleSheet, formatCellStyle) + fillID := setFills(styleSheet, formatCellStyle) + applyAlignment, alignment := setAlignment(styleSheet, formatCellStyle) + cellXfsID := setCellXfs(styleSheet, fontID, numFmtID, fillID, borderID, applyAlignment, alignment) f.setCellStyle(sheet, hcell, vcell, cellXfsID) return err } @@ -771,8 +785,8 @@ func (f *File) setCellStyle(sheet, hcell, vcell string, styleID int) { } // Correct the coordinate area, such correct C1:B3 to B1:C3. - hcell = toAlphaString(hxAxis+1) + strconv.Itoa(hyAxis+1) - vcell = toAlphaString(vxAxis+1) + strconv.Itoa(vyAxis+1) + hcell = ToAlphaString(hxAxis+1) + strconv.Itoa(hyAxis+1) + vcell = ToAlphaString(vxAxis+1) + strconv.Itoa(vyAxis+1) xlsx := f.workSheetReader(sheet) |