summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sheetpr.go20
-rw-r--r--sheetpr_test.go8
-rw-r--r--xmlWorksheet.go7
3 files changed, 35 insertions, 0 deletions
diff --git a/sheetpr.go b/sheetpr.go
index e38b64e..57eebd4 100644
--- a/sheetpr.go
+++ b/sheetpr.go
@@ -31,8 +31,26 @@ type (
FitToPage bool
// AutoPageBreaks is a SheetPrOption
AutoPageBreaks bool
+ // OutlineSummaryBelow is an outlinePr, within SheetPr option
+ OutlineSummaryBelow bool
)
+func (o OutlineSummaryBelow) setSheetPrOption(pr *xlsxSheetPr) {
+ if pr.OutlinePr == nil {
+ pr.OutlinePr = new(xlsxOutlinePr)
+ }
+ pr.OutlinePr.SummaryBelow = bool(o)
+}
+
+func (o *OutlineSummaryBelow) getSheetPrOption(pr *xlsxSheetPr) {
+ // Excel default: true
+ if pr == nil || pr.OutlinePr == nil {
+ *o = true
+ return
+ }
+ *o = OutlineSummaryBelow(defaultTrue(&pr.OutlinePr.SummaryBelow))
+}
+
func (o CodeName) setSheetPrOption(pr *xlsxSheetPr) {
pr.CodeName = string(o)
}
@@ -115,6 +133,7 @@ func (o *AutoPageBreaks) getSheetPrOption(pr *xlsxSheetPr) {
// Published(bool)
// FitToPage(bool)
// AutoPageBreaks(bool)
+// OutlineSummaryBelow(bool)
func (f *File) SetSheetPrOptions(name string, opts ...SheetPrOption) error {
sheet := f.workSheetReader(name)
pr := sheet.SheetPr
@@ -137,6 +156,7 @@ func (f *File) SetSheetPrOptions(name string, opts ...SheetPrOption) error {
// Published(bool)
// FitToPage(bool)
// AutoPageBreaks(bool)
+// OutlineSummaryBelow(bool)
func (f *File) GetSheetPrOptions(name string, opts ...SheetPrOptionPtr) error {
sheet := f.workSheetReader(name)
pr := sheet.SheetPr
diff --git a/sheetpr_test.go b/sheetpr_test.go
index e7e7482..d9f5059 100644
--- a/sheetpr_test.go
+++ b/sheetpr_test.go
@@ -15,6 +15,7 @@ var _ = []excelize.SheetPrOption{
excelize.Published(false),
excelize.FitToPage(true),
excelize.AutoPageBreaks(true),
+ excelize.OutlineSummaryBelow(true),
}
var _ = []excelize.SheetPrOptionPtr{
@@ -23,6 +24,7 @@ var _ = []excelize.SheetPrOptionPtr{
(*excelize.Published)(nil),
(*excelize.FitToPage)(nil),
(*excelize.AutoPageBreaks)(nil),
+ (*excelize.OutlineSummaryBelow)(nil),
}
func ExampleFile_SetSheetPrOptions() {
@@ -35,6 +37,7 @@ func ExampleFile_SetSheetPrOptions() {
excelize.Published(false),
excelize.FitToPage(true),
excelize.AutoPageBreaks(true),
+ excelize.OutlineSummaryBelow(false),
); err != nil {
panic(err)
}
@@ -51,6 +54,7 @@ func ExampleFile_GetSheetPrOptions() {
published excelize.Published
fitToPage excelize.FitToPage
autoPageBreaks excelize.AutoPageBreaks
+ outlineSummaryBelow excelize.OutlineSummaryBelow
)
if err := xl.GetSheetPrOptions(sheet,
@@ -59,6 +63,7 @@ func ExampleFile_GetSheetPrOptions() {
&published,
&fitToPage,
&autoPageBreaks,
+ &outlineSummaryBelow,
); err != nil {
panic(err)
}
@@ -68,6 +73,7 @@ func ExampleFile_GetSheetPrOptions() {
fmt.Println("- published:", published)
fmt.Println("- fitToPage:", fitToPage)
fmt.Println("- autoPageBreaks:", autoPageBreaks)
+ fmt.Println("- outlineSummaryBelow:", outlineSummaryBelow)
// Output:
// Defaults:
// - codeName: ""
@@ -75,6 +81,7 @@ func ExampleFile_GetSheetPrOptions() {
// - published: true
// - fitToPage: false
// - autoPageBreaks: false
+ // - outlineSummaryBelow: true
}
func TestSheetPrOptions(t *testing.T) {
@@ -88,6 +95,7 @@ func TestSheetPrOptions(t *testing.T) {
{new(excelize.Published), excelize.Published(false)},
{new(excelize.FitToPage), excelize.FitToPage(true)},
{new(excelize.AutoPageBreaks), excelize.AutoPageBreaks(true)},
+ {new(excelize.OutlineSummaryBelow), excelize.OutlineSummaryBelow(false)},
} {
opt := test.nonDefault
t.Logf("option %T", opt)
diff --git a/xmlWorksheet.go b/xmlWorksheet.go
index 42f8ddb..d35b40e 100644
--- a/xmlWorksheet.go
+++ b/xmlWorksheet.go
@@ -211,6 +211,13 @@ type xlsxSheetPr struct {
TransitionEntry bool `xml:"transitionEntry,attr,omitempty"`
TabColor *xlsxTabColor `xml:"tabColor,omitempty"`
PageSetUpPr *xlsxPageSetUpPr `xml:"pageSetUpPr,omitempty"`
+ OutlinePr *xlsxOutlinePr `xml:"outlinePr,omitempty"`
+}
+
+// xlsxOutlinePr maps to the outlinePr element
+// SummaryBelow allows you to adjust the direction of grouper controls
+type xlsxOutlinePr struct {
+ SummaryBelow bool `xml:"summaryBelow,attr"`
}
// xlsxPageSetUpPr directly maps the pageSetupPr element in the namespace