summaryrefslogtreecommitdiff
path: root/xmlPivotTable.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2019-09-05 23:42:40 +0800
committerxuri <xuri.me@gmail.com>2019-09-06 00:01:20 +0800
commitb30c642e2bf2a328cf087e03399b783e02e1e647 (patch)
tree1b10d2efb6dc6e712b0b40a27301bec51fa263e9 /xmlPivotTable.go
parent0acb3ef9685e80d51dfda5ab9a9db870af7e1614 (diff)
Prepare pivot table support, add pivot table definition struct
Diffstat (limited to 'xmlPivotTable.go')
-rw-r--r--xmlPivotTable.go289
1 files changed, 289 insertions, 0 deletions
diff --git a/xmlPivotTable.go b/xmlPivotTable.go
new file mode 100644
index 0000000..16c469f
--- /dev/null
+++ b/xmlPivotTable.go
@@ -0,0 +1,289 @@
+// Copyright 2016 - 2019 The excelize Authors. All rights reserved. Use of
+// this source code is governed by a BSD-style license that can be found in
+// the LICENSE file.
+//
+// Package excelize providing a set of functions that allow you to write to
+// and read from XLSX files. Support reads and writes XLSX file generated by
+// Microsoft Excelâ„¢ 2007 and later. Support save file without losing original
+// charts of XLSX. This library needs Go version 1.10 or later.
+
+package excelize
+
+import "encoding/xml"
+
+// xlsxPivotTableDefinition represents the PivotTable root element for
+// non-null PivotTables. There exists one pivotTableDefinition for each
+// PivotTableDefinition part
+type xlsxPivotTableDefinition struct {
+ XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main pivotTableDefinition"`
+ Name string `xml:"name,attr"`
+ CacheID int `xml:"cacheId,attr"`
+ DataOnRows bool `xml:"dataOnRows,attr"`
+ DataPosition int `xml:"dataPosition,attr"`
+ DataCaption string `xml:"dataCaption,attr"`
+ GrandTotalCaption string `xml:"grandTotalCaption,attr"`
+ ErrorCaption string `xml:"errorCaption,attr"`
+ ShowError bool `xml:"showError,attr"`
+ MissingCaption string `xml:"missingCaption,attr"`
+ ShowMissing bool `xml:"showMissing,attr"`
+ PageStyle string `xml:"pageStyle,attr"`
+ PivotTableStyle string `xml:"pivotTableStyle,attr"`
+ VacatedStyle string `xml:"vacatedStyle,attr"`
+ Tag string `xml:"tag,attr"`
+ UpdatedVersion int `xml:"updatedVersion,attr"`
+ MinRefreshableVersion int `xml:"minRefreshableVersion,attr"`
+ AsteriskTotals bool `xml:"asteriskTotals,attr"`
+ ShowItems bool `xml:"showItems,attr"`
+ EditData bool `xml:"editData,attr"`
+ DisableFieldList bool `xml:"disableFieldList,attr"`
+ ShowCalcMbrs bool `xml:"showCalcMbrs,attr"`
+ VisualTotals bool `xml:"visualTotals,attr"`
+ ShowMultipleLabel bool `xml:"showMultipleLabel,attr"`
+ ShowDataDropDown bool `xml:"showDataDropDown,attr"`
+ ShowDrill bool `xml:"showDrill,attr"`
+ PrintDrill bool `xml:"printDrill,attr"`
+ ShowMemberPropertyTips bool `xml:"showMemberPropertyTips,attr"`
+ ShowDataTips bool `xml:"showDataTips,attr"`
+ EnableWizard bool `xml:"enableWizard,attr"`
+ EnableDrill bool `xml:"enableDrill,attr"`
+ EnableFieldProperties bool `xml:"enableFieldProperties,attr"`
+ PreserveFormatting bool `xml:"preserveFormatting,attr"`
+ UseAutoFormatting bool `xml:"useAutoFormatting,attr"`
+ PageWrap int `xml:"pageWrap,attr"`
+ PageOverThenDown bool `xml:"pageOverThenDown,attr"`
+ SubtotalHiddenItems bool `xml:"subtotalHiddenItems,attr"`
+ RowGrandTotals bool `xml:"rowGrandTotals,attr"`
+ ColGrandTotals bool `xml:"colGrandTotals,attr"`
+ FieldPrintTitles bool `xml:"fieldPrintTitles,attr"`
+ ItemPrintTitles bool `xml:"itemPrintTitles,attr"`
+ MergeItem bool `xml:"mergeItem,attr"`
+ ShowDropZones bool `xml:"showDropZones,attr"`
+ CreatedVersion int `xml:"createdVersion,attr"`
+ Indent int `xml:"indent,attr"`
+ ShowEmptyRow bool `xml:"showEmptyRow,attr"`
+ ShowEmptyCol bool `xml:"showEmptyCol,attr"`
+ ShowHeaders bool `xml:"showHeaders,attr"`
+ Compact bool `xml:"compact,attr"`
+ Outline bool `xml:"outline,attr"`
+ OutlineData bool `xml:"outlineData,attr"`
+ CompactData bool `xml:"compactData,attr"`
+ Published bool `xml:"published,attr"`
+ GridDropZones bool `xml:"gridDropZones,attr"`
+ Immersive bool `xml:"immersive,attr"`
+ MultipleFieldFilters bool `xml:"multipleFieldFilters,attr"`
+ ChartFormat int `xml:"chartFormat,attr"`
+ RowHeaderCaption string `xml:"rowHeaderCaption,attr"`
+ ColHeaderCaption string `xml:"colHeaderCaption,attr"`
+ FieldListSortAscending bool `xml:"fieldListSortAscending,attr"`
+ MdxSubqueries bool `xml:"mdxSubqueries,attr"`
+ CustomListSort bool `xml:"customListSort,attr"`
+ Location *xlsxLocation `xml:"location"`
+ PivotFields *xlsxPivotFields `xml:"pivotFields"`
+ RowFields *xlsxRowFields `xml:"rowFields"`
+ RowItems *xlsxRowItems `xml:"rowItems"`
+ ColFields *xlsxColFields `xml:"colFields"`
+ ColItems *xlsxColItems `xml:"colItems"`
+ PageFields *xlsxPageFields `xml:"pageFields"`
+ DataFields *xlsxDataFields `xml:"dataFields"`
+ ConditionalFormats *xlsxConditionalFormats `xml:"conditionalFormats"`
+ PivotTableStyleInfo *xlsxPivotTableStyleInfo `xml:"pivotTableStyleInfo"`
+}
+
+// xlsxLocation represents location information for the PivotTable.
+type xlsxLocation struct {
+ Ref string `xml:"ref,attr"`
+ FirstHeaderRow int `xml:"firstHeaderRow,attr"`
+ FirstDataRow int `xml:"firstDataRow,attr"`
+ FirstDataCol int `xml:"firstDataCol,attr"`
+ RowPageCount int `xml:"rowPageCount,attr"`
+ ColPageCount int `xml:"colPageCount,attr"`
+}
+
+// xlsxPivotFields represents the collection of fields that appear on the
+// PivotTable.
+type xlsxPivotFields struct {
+ Count int `xml:"count,attr"`
+ PivotField []*xlsxPivotField `xml:"pivotField"`
+}
+
+// xlsxPivotField represents a single field in the PivotTable. This element
+// contains information about the field, including the collection of items in
+// the field.
+type xlsxPivotField struct {
+ Name string `xml:"name,attr"`
+ Axis string `xml:"axis,attr,omitempty"`
+ DataField bool `xml:"dataField,attr"`
+ SubtotalCaption string `xml:"subtotalCaption,attr"`
+ ShowDropDowns bool `xml:"showDropDowns,attr"`
+ HiddenLevel bool `xml:"hiddenLevel,attr"`
+ UniqueMemberProperty string `xml:"uniqueMemberProperty,attr"`
+ Compact bool `xml:"compact,attr"`
+ AllDrilled bool `xml:"allDrilled,attr"`
+ NumFmtId string `xml:"numFmtId,attr,omitempty"`
+ Outline bool `xml:"outline,attr"`
+ SubtotalTop bool `xml:"subtotalTop,attr"`
+ DragToRow bool `xml:"dragToRow,attr"`
+ DragToCol bool `xml:"dragToCol,attr"`
+ MultipleItemSelectionAllowed bool `xml:"multipleItemSelectionAllowed,attr"`
+ DragToPage bool `xml:"dragToPage,attr"`
+ DragToData bool `xml:"dragToData,attr"`
+ DragOff bool `xml:"dragOff,attr"`
+ ShowAll bool `xml:"showAll,attr"`
+ InsertBlankRow bool `xml:"insertBlankRow,attr"`
+ ServerField bool `xml:"serverField,attr"`
+ InsertPageBreak bool `xml:"insertPageBreak,attr"`
+ AutoShow bool `xml:"autoShow,attr"`
+ TopAutoShow bool `xml:"topAutoShow,attr"`
+ HideNewItems bool `xml:"hideNewItems,attr"`
+ MeasureFilter bool `xml:"measureFilter,attr"`
+ IncludeNewItemsInFilter bool `xml:"includeNewItemsInFilter,attr"`
+ ItemPageCount int `xml:"itemPageCount,attr"`
+ SortType string `xml:"sortType,attr"`
+ DataSourceSort bool `xml:"dataSourceSort,attr,omitempty"`
+ NonAutoSortDefault bool `xml:"nonAutoSortDefault,attr"`
+ RankBy int `xml:"rankBy,attr,omitempty"`
+ DefaultSubtotal bool `xml:"defaultSubtotal,attr"`
+ SumSubtotal bool `xml:"sumSubtotal,attr"`
+ CountASubtotal bool `xml:"countASubtotal,attr"`
+ AvgSubtotal bool `xml:"avgSubtotal,attr"`
+ MaxSubtotal bool `xml:"maxSubtotal,attr"`
+ MinSubtotal bool `xml:"minSubtotal,attr"`
+ ProductSubtotal bool `xml:"productSubtotal,attr"`
+ CountSubtotal bool `xml:"countSubtotal,attr"`
+ StdDevSubtotal bool `xml:"stdDevSubtotal,attr"`
+ StdDevPSubtotal bool `xml:"stdDevPSubtotal,attr"`
+ VarSubtotal bool `xml:"varSubtotal,attr"`
+ VarPSubtotal bool `xml:"varPSubtotal,attr"`
+ ShowPropCell bool `xml:"showPropCell,attr,omitempty"`
+ ShowPropTip bool `xml:"showPropTip,attr,omitempty"`
+ ShowPropAsCaption bool `xml:"showPropAsCaption,attr,omitempty"`
+ DefaultAttributeDrillState bool `xml:"defaultAttributeDrillState,attr,omitempty"`
+ Items *xlsxItems `xml:"items"`
+ AutoSortScope *xlsxAutoSortScope `xml:"autoSortScope"`
+ ExtLst *xlsxExtLst `xml:"extLst"`
+}
+
+// xlsxItems represents the collection of items in a PivotTable field. The
+// items in the collection are ordered by index. Items represent the unique
+// entries from the field in the source data.
+type xlsxItems struct {
+ Count int `xml:"count,attr"`
+ Item []*xlsxItem `xml:"item"`
+}
+
+// xlsxItem represents a single item in PivotTable field.
+type xlsxItem struct {
+ N string `xml:"n,attr"`
+ T string `xml:"t,attr"`
+ H bool `xml:"h,attr"`
+ S bool `xml:"s,attr"`
+ SD bool `xml:"sd,attr"`
+ F bool `xml:"f,attr"`
+ M bool `xml:"m,attr"`
+ C bool `xml:"c,attr"`
+ X int `xml:"x,attr,omitempty"`
+ D bool `xml:"d,attr"`
+ E bool `xml:"e,attr"`
+}
+
+// xlsxAutoSortScope represents the sorting scope for the PivotTable.
+type xlsxAutoSortScope struct {
+}
+
+// xlsxRowFields represents the collection of row fields for the PivotTable.
+type xlsxRowFields struct {
+ Count int `xml:"count,attr"`
+ Fields []*xlsxField `xml:"fields"`
+}
+
+// xlsxField represents a generic field that can appear either on the column
+// or the row region of the PivotTable. There areas many <x> elements as there
+// are item values in any particular column or row.
+type xlsxField struct {
+ X int `xml:"x,attr"`
+}
+
+// xlsxRowItems represents the collection of items in row axis of the
+// PivotTable.
+type xlsxRowItems struct {
+ Count int `xml:"count,attr"`
+ I []*xlsxI `xml:"i"`
+}
+
+// xlsxI represents the collection of items in the row region of the
+// PivotTable.
+type xlsxI struct {
+ X []*xlsxX `xml:"x"`
+}
+
+// xlsxX represents an array of indexes to cached shared item values.
+type xlsxX struct {
+ XMLName xml.Name `xml:"x"`
+}
+
+// xlsxColFields represents the collection of fields that are on the column
+// axis of the PivotTable.
+type xlsxColFields struct {
+ Count int `xml:"count,attr"`
+ Fields []*xlsxField `xml:"fields"`
+}
+
+// xlsxColItems represents the collection of column items of the PivotTable.
+type xlsxColItems struct {
+ Count int `xml:"count,attr"`
+ I []*xlsxI `xml:"i"`
+}
+
+// xlsxPageFields represents the collection of items in the page or report
+// filter region of the PivotTable.
+type xlsxPageFields struct {
+ Count int `xml:"count,attr"`
+ PageField []*xlsxPageField `xml:"pageField"`
+}
+
+// xlsxPageField represents a field on the page or report filter of the
+// PivotTable.
+type xlsxPageField struct {
+ Fld int `xml:"fld,attr"`
+ Item int `xml:"item,attr,omitempty"`
+ Hier int `xml:"hier,attr"`
+ Name string `xml:"name,attr"`
+ Cap string `xml:"cap,attr"`
+ ExtLst *xlsxExtLst `xml:"extLst"`
+}
+
+// xlsxDataFields represents the collection of items in the data region of the
+// PivotTable.
+type xlsxDataFields struct {
+ Count int `xml:"count,attr"`
+ DataField *xlsxDataField `xml:"dataField"`
+}
+
+// xlsxDataField represents a field from a source list, table, or database
+// that contains data that is summarized in a PivotTable.
+type xlsxDataField struct {
+ Name string `xml:"name,attr,omitempty"`
+ Fld int `xml:"fld,attr"`
+ Subtotal string `xml:"subtotal,attr"`
+ ShowDataAs string `xml:"showDataAs,attr"`
+ BaseField int `xml:"baseField,attr"`
+ BaseItem int64 `xml:"baseItem,attr"`
+ NumFmtId string `xml:"numFmtId,attr,omitempty"`
+ ExtLst *xlsxExtLst `xml:"extLst"`
+}
+
+// xlsxConditionalFormats represents the collection of conditional formats
+// applied to a PivotTable.
+type xlsxConditionalFormats struct {
+}
+
+// xlsxPivotTableStyleInfo represent information on style applied to the
+// PivotTable.
+type xlsxPivotTableStyleInfo struct {
+ Name string `xml:"name,attr"`
+ ShowRowHeaders bool `xml:"showRowHeaders,attr"`
+ ShowColHeaders bool `xml:"showColHeaders,attr"`
+ ShowRowStripes bool `xml:"showRowStripes,attr"`
+ ShowColStripes bool `xml:"showColStripes,attr"`
+ ShowLastColumn bool `xml:"showLastColumn,attr,omitempty"`
+}