// 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 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"` }