summaryrefslogtreecommitdiff
path: root/sheetpr.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2017-11-21 11:07:00 +0800
committerGitHub <noreply@github.com>2017-11-21 11:07:00 +0800
commit130eb453f4c38f4c69790adffce58f73c94bde2a (patch)
tree4fcd1ebe83b27291f08a5eb7e63af946fdaf802f /sheetpr.go
parent90998bfb4daac6e38346c03f41cb3c4e78b1ef7a (diff)
parent954612157bbb7d2bce5602801019cb172a80b7d6 (diff)
Merge pull request #154 from dolmen-go/feature/SheetPr-options
Add {G,S}etSheetPrOptions() to allow to set FitToPage for printing
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
+}