| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296 | // Copyright 2016 - 2021 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 / XLSM / XLTM files. Supports reading and writing// spreadsheet documents generated by Microsoft Excel™ 2007 and later. Supports// complex components by high compatibility, and provided streaming API for// generating or reading data from a worksheet with huge amounts of data. This// library needs Go version 1.15 or later.package excelizeimport "encoding/xml"// xlsxPivotTableDefinition represents the PivotTable root element for// non-null PivotTables. There exists one pivotTableDefinition for each// PivotTableDefinition parttype xlsxPivotTableDefinition struct {	XMLName                 xml.Name                 `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main pivotTableDefinition"`	Name                    string                   `xml:"name,attr"`	CacheID                 int                      `xml:"cacheId,attr"`	ApplyNumberFormats      bool                     `xml:"applyNumberFormats,attr,omitempty"`	ApplyBorderFormats      bool                     `xml:"applyBorderFormats,attr,omitempty"`	ApplyFontFormats        bool                     `xml:"applyFontFormats,attr,omitempty"`	ApplyPatternFormats     bool                     `xml:"applyPatternFormats,attr,omitempty"`	ApplyAlignmentFormats   bool                     `xml:"applyAlignmentFormats,attr,omitempty"`	ApplyWidthHeightFormats bool                     `xml:"applyWidthHeightFormats,attr,omitempty"`	DataOnRows              bool                     `xml:"dataOnRows,attr,omitempty"`	DataPosition            int                      `xml:"dataPosition,attr,omitempty"`	DataCaption             string                   `xml:"dataCaption,attr"`	GrandTotalCaption       string                   `xml:"grandTotalCaption,attr,omitempty"`	ErrorCaption            string                   `xml:"errorCaption,attr,omitempty"`	ShowError               *bool                    `xml:"showError,attr"`	MissingCaption          string                   `xml:"missingCaption,attr,omitempty"`	ShowMissing             bool                     `xml:"showMissing,attr,omitempty"`	PageStyle               string                   `xml:"pageStyle,attr,omitempty"`	PivotTableStyle         string                   `xml:"pivotTableStyle,attr,omitempty"`	VacatedStyle            string                   `xml:"vacatedStyle,attr,omitempty"`	Tag                     string                   `xml:"tag,attr,omitempty"`	UpdatedVersion          int                      `xml:"updatedVersion,attr,omitempty"`	MinRefreshableVersion   int                      `xml:"minRefreshableVersion,attr,omitempty"`	AsteriskTotals          bool                     `xml:"asteriskTotals,attr,omitempty"`	ShowItems               bool                     `xml:"showItems,attr,omitempty"`	EditData                bool                     `xml:"editData,attr,omitempty"`	DisableFieldList        bool                     `xml:"disableFieldList,attr,omitempty"`	ShowCalcMbrs            bool                     `xml:"showCalcMbrs,attr,omitempty"`	VisualTotals            bool                     `xml:"visualTotals,attr,omitempty"`	ShowMultipleLabel       bool                     `xml:"showMultipleLabel,attr,omitempty"`	ShowDataDropDown        bool                     `xml:"showDataDropDown,attr,omitempty"`	ShowDrill               *bool                    `xml:"showDrill,attr"`	PrintDrill              bool                     `xml:"printDrill,attr,omitempty"`	ShowMemberPropertyTips  bool                     `xml:"showMemberPropertyTips,attr,omitempty"`	ShowDataTips            bool                     `xml:"showDataTips,attr,omitempty"`	EnableWizard            bool                     `xml:"enableWizard,attr,omitempty"`	EnableDrill             bool                     `xml:"enableDrill,attr,omitempty"`	EnableFieldProperties   bool                     `xml:"enableFieldProperties,attr,omitempty"`	PreserveFormatting      bool                     `xml:"preserveFormatting,attr,omitempty"`	UseAutoFormatting       *bool                    `xml:"useAutoFormatting,attr,omitempty"`	PageWrap                int                      `xml:"pageWrap,attr,omitempty"`	PageOverThenDown        *bool                    `xml:"pageOverThenDown,attr,omitempty"`	SubtotalHiddenItems     bool                     `xml:"subtotalHiddenItems,attr,omitempty"`	RowGrandTotals          *bool                    `xml:"rowGrandTotals,attr,omitempty"`	ColGrandTotals          *bool                    `xml:"colGrandTotals,attr,omitempty"`	FieldPrintTitles        bool                     `xml:"fieldPrintTitles,attr,omitempty"`	ItemPrintTitles         bool                     `xml:"itemPrintTitles,attr,omitempty"`	MergeItem               *bool                    `xml:"mergeItem,attr,omitempty"`	ShowDropZones           bool                     `xml:"showDropZones,attr,omitempty"`	CreatedVersion          int                      `xml:"createdVersion,attr,omitempty"`	Indent                  int                      `xml:"indent,attr,omitempty"`	ShowEmptyRow            bool                     `xml:"showEmptyRow,attr,omitempty"`	ShowEmptyCol            bool                     `xml:"showEmptyCol,attr,omitempty"`	ShowHeaders             bool                     `xml:"showHeaders,attr,omitempty"`	Compact                 bool                     `xml:"compact,attr"`	Outline                 bool                     `xml:"outline,attr"`	OutlineData             bool                     `xml:"outlineData,attr,omitempty"`	CompactData             *bool                    `xml:"compactData,attr,omitempty"`	Published               bool                     `xml:"published,attr,omitempty"`	GridDropZones           bool                     `xml:"gridDropZones,attr,omitempty"`	Immersive               bool                     `xml:"immersive,attr,omitempty"`	MultipleFieldFilters    bool                     `xml:"multipleFieldFilters,attr,omitempty"`	ChartFormat             int                      `xml:"chartFormat,attr,omitempty"`	RowHeaderCaption        string                   `xml:"rowHeaderCaption,attr,omitempty"`	ColHeaderCaption        string                   `xml:"colHeaderCaption,attr,omitempty"`	FieldListSortAscending  bool                     `xml:"fieldListSortAscending,attr,omitempty"`	MdxSubqueries           bool                     `xml:"mdxSubqueries,attr,omitempty"`	CustomListSort          bool                     `xml:"customListSort,attr,omitempty"`	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,omitempty"`	ColPageCount   int    `xml:"colPageCount,attr,omitempty"`}// 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,omitempty"`	Axis                         string             `xml:"axis,attr,omitempty"`	DataField                    bool               `xml:"dataField,attr,omitempty"`	SubtotalCaption              string             `xml:"subtotalCaption,attr,omitempty"`	ShowDropDowns                bool               `xml:"showDropDowns,attr,omitempty"`	HiddenLevel                  bool               `xml:"hiddenLevel,attr,omitempty"`	UniqueMemberProperty         string             `xml:"uniqueMemberProperty,attr,omitempty"`	Compact                      bool               `xml:"compact,attr"`	AllDrilled                   bool               `xml:"allDrilled,attr,omitempty"`	NumFmtID                     string             `xml:"numFmtId,attr,omitempty"`	Outline                      bool               `xml:"outline,attr"`	SubtotalTop                  bool               `xml:"subtotalTop,attr,omitempty"`	DragToRow                    bool               `xml:"dragToRow,attr,omitempty"`	DragToCol                    bool               `xml:"dragToCol,attr,omitempty"`	MultipleItemSelectionAllowed bool               `xml:"multipleItemSelectionAllowed,attr,omitempty"`	DragToPage                   bool               `xml:"dragToPage,attr,omitempty"`	DragToData                   bool               `xml:"dragToData,attr,omitempty"`	DragOff                      bool               `xml:"dragOff,attr,omitempty"`	ShowAll                      bool               `xml:"showAll,attr"`	InsertBlankRow               bool               `xml:"insertBlankRow,attr,omitempty"`	ServerField                  bool               `xml:"serverField,attr,omitempty"`	InsertPageBreak              bool               `xml:"insertPageBreak,attr,omitempty"`	AutoShow                     bool               `xml:"autoShow,attr,omitempty"`	TopAutoShow                  bool               `xml:"topAutoShow,attr,omitempty"`	HideNewItems                 bool               `xml:"hideNewItems,attr,omitempty"`	MeasureFilter                bool               `xml:"measureFilter,attr,omitempty"`	IncludeNewItemsInFilter      bool               `xml:"includeNewItemsInFilter,attr,omitempty"`	ItemPageCount                int                `xml:"itemPageCount,attr,omitempty"`	SortType                     string             `xml:"sortType,attr,omitempty"`	DataSourceSort               bool               `xml:"dataSourceSort,attr,omitempty"`	NonAutoSortDefault           bool               `xml:"nonAutoSortDefault,attr,omitempty"`	RankBy                       int                `xml:"rankBy,attr,omitempty"`	DefaultSubtotal              *bool              `xml:"defaultSubtotal,attr,omitempty"`	SumSubtotal                  bool               `xml:"sumSubtotal,attr,omitempty"`	CountASubtotal               bool               `xml:"countASubtotal,attr,omitempty"`	AvgSubtotal                  bool               `xml:"avgSubtotal,attr,omitempty"`	MaxSubtotal                  bool               `xml:"maxSubtotal,attr,omitempty"`	MinSubtotal                  bool               `xml:"minSubtotal,attr,omitempty"`	ProductSubtotal              bool               `xml:"productSubtotal,attr,omitempty"`	CountSubtotal                bool               `xml:"countSubtotal,attr,omitempty"`	StdDevSubtotal               bool               `xml:"stdDevSubtotal,attr,omitempty"`	StdDevPSubtotal              bool               `xml:"stdDevPSubtotal,attr,omitempty"`	VarSubtotal                  bool               `xml:"varSubtotal,attr,omitempty"`	VarPSubtotal                 bool               `xml:"varPSubtotal,attr,omitempty"`	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,omitempty"`	T  string `xml:"t,attr,omitempty"`	H  bool   `xml:"h,attr,omitempty"`	S  bool   `xml:"s,attr,omitempty"`	SD bool   `xml:"sd,attr,omitempty"`	F  bool   `xml:"f,attr,omitempty"`	M  bool   `xml:"m,attr,omitempty"`	C  bool   `xml:"c,attr,omitempty"`	X  *int   `xml:"x,attr,omitempty"`	D  bool   `xml:"d,attr,omitempty"`	E  bool   `xml:"e,attr,omitempty"`}// 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"`	Field []*xlsxField `xml:"field"`}// 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 {}// xlsxColFields represents the collection of fields that are on the column// axis of the PivotTable.type xlsxColFields struct {	Count int          `xml:"count,attr"`	Field []*xlsxField `xml:"field"`}// 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,omitempty"`	Name   string      `xml:"name,attr,omitempty"`	Cap    string      `xml:"cap,attr,omitempty"`	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,omitempty"`	ShowDataAs string      `xml:"showDataAs,attr,omitempty"`	BaseField  int         `xml:"baseField,attr,omitempty"`	BaseItem   int64       `xml:"baseItem,attr,omitempty"`	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,omitempty"`	ShowColStripes bool   `xml:"showColStripes,attr,omitempty"`	ShowLastColumn bool   `xml:"showLastColumn,attr,omitempty"`}
 |