diff options
author | xuri <xuri.me@gmail.com> | 2022-10-08 22:08:06 +0800 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2022-10-08 22:08:16 +0800 |
commit | b1e776ee33ec78b7f6c2a0de8109009963dea521 (patch) | |
tree | 2a769b090171be17d3d1d6dacb7cc987f34d28ad /sheetpr.go | |
parent | 57051326d06cea02774dc0ace3293906ec5f281e (diff) |
Support to set summary columns to appear to the right of detail in an outline
- Simplify calculation engine code
- Update documentation for the functions
- Update dependencies module
Diffstat (limited to 'sheetpr.go')
-rw-r--r-- | sheetpr.go | 54 |
1 files changed, 33 insertions, 21 deletions
@@ -106,41 +106,55 @@ func (f *File) GetPageMargins(sheet string) (PageLayoutMarginsOptions, error) { return opts, err } -// setSheetProps set worksheet format properties by given options. -func (ws *xlsxWorksheet) setSheetProps(opts *SheetPropsOptions) { - prepareSheetPr := func(ws *xlsxWorksheet) { - if ws.SheetPr == nil { - ws.SheetPr = new(xlsxSheetPr) +// prepareSheetPr sheetPr element if which not exist. +func (ws *xlsxWorksheet) prepareSheetPr() { + if ws.SheetPr == nil { + ws.SheetPr = new(xlsxSheetPr) + } +} + +// setSheetOutlinePr set worksheet outline properties by given options. +func (ws *xlsxWorksheet) setSheetOutlineProps(opts *SheetPropsOptions) { + prepareOutlinePr := func(ws *xlsxWorksheet) { + ws.prepareSheetPr() + if ws.SheetPr.OutlinePr == nil { + ws.SheetPr.OutlinePr = new(xlsxOutlinePr) } } + if opts.OutlineSummaryBelow != nil { + prepareOutlinePr(ws) + ws.SheetPr.OutlinePr.SummaryBelow = opts.OutlineSummaryBelow + } + if opts.OutlineSummaryRight != nil { + prepareOutlinePr(ws) + ws.SheetPr.OutlinePr.SummaryRight = opts.OutlineSummaryRight + } +} + +// setSheetProps set worksheet format properties by given options. +func (ws *xlsxWorksheet) setSheetProps(opts *SheetPropsOptions) { preparePageSetUpPr := func(ws *xlsxWorksheet) { - prepareSheetPr(ws) + ws.prepareSheetPr() if ws.SheetPr.PageSetUpPr == nil { ws.SheetPr.PageSetUpPr = new(xlsxPageSetUpPr) } } - prepareOutlinePr := func(ws *xlsxWorksheet) { - prepareSheetPr(ws) - if ws.SheetPr.OutlinePr == nil { - ws.SheetPr.OutlinePr = new(xlsxOutlinePr) - } - } prepareTabColor := func(ws *xlsxWorksheet) { - prepareSheetPr(ws) + ws.prepareSheetPr() if ws.SheetPr.TabColor == nil { ws.SheetPr.TabColor = new(xlsxTabColor) } } if opts.CodeName != nil { - prepareSheetPr(ws) + ws.prepareSheetPr() ws.SheetPr.CodeName = *opts.CodeName } if opts.EnableFormatConditionsCalculation != nil { - prepareSheetPr(ws) + ws.prepareSheetPr() ws.SheetPr.EnableFormatConditionsCalculation = opts.EnableFormatConditionsCalculation } if opts.Published != nil { - prepareSheetPr(ws) + ws.prepareSheetPr() ws.SheetPr.Published = opts.Published } if opts.AutoPageBreaks != nil { @@ -151,10 +165,7 @@ func (ws *xlsxWorksheet) setSheetProps(opts *SheetPropsOptions) { preparePageSetUpPr(ws) ws.SheetPr.PageSetUpPr.FitToPage = *opts.FitToPage } - if opts.OutlineSummaryBelow != nil { - prepareOutlinePr(ws) - ws.SheetPr.OutlinePr.SummaryBelow = *opts.OutlineSummaryBelow - } + ws.setSheetOutlineProps(opts) if opts.TabColorIndexed != nil { prepareTabColor(ws) ws.SheetPr.TabColor.Indexed = *opts.TabColorIndexed @@ -237,7 +248,8 @@ func (f *File) GetSheetProps(sheet string) (SheetPropsOptions, error) { opts.FitToPage = boolPtr(ws.SheetPr.PageSetUpPr.FitToPage) } if ws.SheetPr.OutlinePr != nil { - opts.OutlineSummaryBelow = boolPtr(ws.SheetPr.OutlinePr.SummaryBelow) + opts.OutlineSummaryBelow = ws.SheetPr.OutlinePr.SummaryBelow + opts.OutlineSummaryRight = ws.SheetPr.OutlinePr.SummaryRight } if ws.SheetPr.TabColor != nil { opts.TabColorIndexed = intPtr(ws.SheetPr.TabColor.Indexed) |