summaryrefslogtreecommitdiff
path: root/sheetpr.go
diff options
context:
space:
mode:
authorOlivier Mengué <dolmen@cpan.org>2017-11-14 15:09:50 +0100
committerOlivier Mengué <dolmen@cpan.org>2017-11-17 18:45:20 +0100
commit954612157bbb7d2bce5602801019cb172a80b7d6 (patch)
tree4fcd1ebe83b27291f08a5eb7e63af946fdaf802f /sheetpr.go
parent90998bfb4daac6e38346c03f41cb3c4e78b1ef7a (diff)
Add {G,S}etSheetPrOptions()
Add SetSheetPrOptions and GetSheetPrOptions to allow to set options on <sheetPr> and <pageSetUpPr>. The following options are implemented: - CodeName (string) - EnableFormatConditionsCalculation (bool) - Published (bool) - FitToPage (bool) - AutoPageBreaks (bool)
Diffstat (limited to 'sheetpr.go')
-rw-r--r--sheetpr.go139
1 files changed, 139 insertions, 0 deletions
diff --git a/sheetpr.go b/sheetpr.go
new file mode 100644
index 0000000..2a88717
--- /dev/null
+++ b/sheetpr.go
@@ -0,0 +1,139 @@
+package excelize
+
+// SheetPrOption is an option of a view of a worksheet. See SetSheetPrOptions().
+type SheetPrOption interface {
+ setSheetPrOption(view *xlsxSheetPr)
+}
+
+// SheetPrOptionPtr is a writable SheetPrOption. See GetSheetPrOptions().
+type SheetPrOptionPtr interface {
+ SheetPrOption
+ getSheetPrOption(view *xlsxSheetPr)
+}
+
+type (
+ // CodeName is a SheetPrOption
+ CodeName string
+ // EnableFormatConditionsCalculation is a SheetPrOption
+ EnableFormatConditionsCalculation bool
+ // Published is a SheetPrOption
+ Published bool
+ // FitToPage is a SheetPrOption
+ FitToPage bool
+ // AutoPageBreaks is a SheetPrOption
+ AutoPageBreaks bool
+)
+
+func (o CodeName) setSheetPrOption(pr *xlsxSheetPr) {
+ pr.CodeName = string(o)
+}
+
+func (o *CodeName) getSheetPrOption(pr *xlsxSheetPr) {
+ if pr == nil {
+ *o = ""
+ return
+ }
+ *o = CodeName(pr.CodeName)
+}
+
+func (o EnableFormatConditionsCalculation) setSheetPrOption(pr *xlsxSheetPr) {
+ pr.EnableFormatConditionsCalculation = boolPtr(bool(o))
+}
+
+func (o *EnableFormatConditionsCalculation) getSheetPrOption(pr *xlsxSheetPr) {
+ if pr == nil {
+ *o = true
+ return
+ }
+ *o = EnableFormatConditionsCalculation(defaultTrue(pr.EnableFormatConditionsCalculation))
+}
+
+func (o Published) setSheetPrOption(pr *xlsxSheetPr) {
+ pr.Published = boolPtr(bool(o))
+}
+
+func (o *Published) getSheetPrOption(pr *xlsxSheetPr) {
+ if pr == nil {
+ *o = true
+ return
+ }
+ *o = Published(defaultTrue(pr.Published))
+}
+
+func (o FitToPage) setSheetPrOption(pr *xlsxSheetPr) {
+ if pr.PageSetUpPr == nil {
+ if !o {
+ return
+ }
+ pr.PageSetUpPr = new(xlsxPageSetUpPr)
+ }
+ pr.PageSetUpPr.FitToPage = bool(o)
+}
+
+func (o *FitToPage) getSheetPrOption(pr *xlsxSheetPr) {
+ // Excel default: false
+ if pr == nil || pr.PageSetUpPr == nil {
+ *o = false
+ return
+ }
+ *o = FitToPage(pr.PageSetUpPr.FitToPage)
+}
+
+func (o AutoPageBreaks) setSheetPrOption(pr *xlsxSheetPr) {
+ if pr.PageSetUpPr == nil {
+ if !o {
+ return
+ }
+ pr.PageSetUpPr = new(xlsxPageSetUpPr)
+ }
+ pr.PageSetUpPr.AutoPageBreaks = bool(o)
+}
+
+func (o *AutoPageBreaks) getSheetPrOption(pr *xlsxSheetPr) {
+ // Excel default: false
+ if pr == nil || pr.PageSetUpPr == nil {
+ *o = false
+ return
+ }
+ *o = AutoPageBreaks(pr.PageSetUpPr.AutoPageBreaks)
+}
+
+// SetSheetPrOptions sets sheet properties.
+//
+// Available options:
+// CodeName(string)
+// EnableFormatConditionsCalculation(bool)
+// Published(bool)
+// FitToPage(bool)
+// AutoPageBreaks(bool)
+func (f *File) SetSheetPrOptions(name string, opts ...SheetPrOption) error {
+ sheet := f.workSheetReader(name)
+ pr := sheet.SheetPr
+ if pr == nil {
+ pr = new(xlsxSheetPr)
+ sheet.SheetPr = pr
+ }
+
+ for _, opt := range opts {
+ opt.setSheetPrOption(pr)
+ }
+ return nil
+}
+
+// SetSheetPrOptions sets sheet properties.
+//
+// Available options:
+// CodeName(string)
+// EnableFormatConditionsCalculation(bool)
+// Published(bool)
+// FitToPage(bool)
+// AutoPageBreaks(bool)
+func (f *File) GetSheetPrOptions(name string, opts ...SheetPrOptionPtr) error {
+ sheet := f.workSheetReader(name)
+ pr := sheet.SheetPr
+
+ for _, opt := range opts {
+ opt.getSheetPrOption(pr)
+ }
+ return nil
+}