2021-03-30 23:02:22 +08:00
|
|
|
// Copyright 2016 - 2021 The excelize Authors. All rights reserved. Use of
|
2020-05-12 23:26:26 +08:00
|
|
|
// 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
|
2021-03-30 23:02:22 +08:00
|
|
|
// spreadsheet documents generated by Microsoft Excel™ 2007 and later. Supports
|
2020-05-12 23:26:26 +08:00
|
|
|
// complex components by high compatibility, and provided streaming API for
|
|
|
|
// generating or reading data from a worksheet with huge amounts of data. This
|
2021-04-04 15:29:43 +08:00
|
|
|
// library needs Go version 1.15 or later.
|
2020-05-12 23:26:26 +08:00
|
|
|
|
2019-09-08 21:57:55 +08:00
|
|
|
package excelize
|
|
|
|
|
|
|
|
import "encoding/xml"
|
|
|
|
|
2019-09-16 01:17:35 +08:00
|
|
|
// xlsxPivotCacheDefinition represents the pivotCacheDefinition part. This part
|
2019-09-08 21:57:55 +08:00
|
|
|
// defines each field in the source data, including the name, the string
|
|
|
|
// resources of the instance data (for shared items), and information about
|
|
|
|
// the type of data that appears in the field.
|
2019-09-16 01:17:35 +08:00
|
|
|
type xlsxPivotCacheDefinition struct {
|
2019-09-08 21:57:55 +08:00
|
|
|
XMLName xml.Name `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main pivotCacheDefinition"`
|
|
|
|
RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
|
|
|
|
Invalid bool `xml:"invalid,attr,omitempty"`
|
2019-09-20 00:20:30 +08:00
|
|
|
SaveData bool `xml:"saveData,attr"`
|
2019-09-08 21:57:55 +08:00
|
|
|
RefreshOnLoad bool `xml:"refreshOnLoad,attr,omitempty"`
|
|
|
|
OptimizeMemory bool `xml:"optimizeMemory,attr,omitempty"`
|
|
|
|
EnableRefresh bool `xml:"enableRefresh,attr,omitempty"`
|
|
|
|
RefreshedBy string `xml:"refreshedBy,attr,omitempty"`
|
|
|
|
RefreshedDate float64 `xml:"refreshedDate,attr,omitempty"`
|
|
|
|
RefreshedDateIso float64 `xml:"refreshedDateIso,attr,omitempty"`
|
|
|
|
BackgroundQuery bool `xml:"backgroundQuery,attr"`
|
|
|
|
MissingItemsLimit int `xml:"missingItemsLimit,attr,omitempty"`
|
|
|
|
CreatedVersion int `xml:"createdVersion,attr,omitempty"`
|
|
|
|
RefreshedVersion int `xml:"refreshedVersion,attr,omitempty"`
|
|
|
|
MinRefreshableVersion int `xml:"minRefreshableVersion,attr,omitempty"`
|
|
|
|
RecordCount int `xml:"recordCount,attr,omitempty"`
|
|
|
|
UpgradeOnRefresh bool `xml:"upgradeOnRefresh,attr,omitempty"`
|
|
|
|
TupleCacheAttr bool `xml:"tupleCache,attr,omitempty"`
|
|
|
|
SupportSubquery bool `xml:"supportSubquery,attr,omitempty"`
|
|
|
|
SupportAdvancedDrill bool `xml:"supportAdvancedDrill,attr,omitempty"`
|
|
|
|
CacheSource *xlsxCacheSource `xml:"cacheSource"`
|
|
|
|
CacheFields *xlsxCacheFields `xml:"cacheFields"`
|
|
|
|
CacheHierarchies *xlsxCacheHierarchies `xml:"cacheHierarchies"`
|
|
|
|
Kpis *xlsxKpis `xml:"kpis"`
|
|
|
|
TupleCache *xlsxTupleCache `xml:"tupleCache"`
|
|
|
|
CalculatedItems *xlsxCalculatedItems `xml:"calculatedItems"`
|
|
|
|
CalculatedMembers *xlsxCalculatedMembers `xml:"calculatedMembers"`
|
|
|
|
Dimensions *xlsxDimensions `xml:"dimensions"`
|
|
|
|
MeasureGroups *xlsxMeasureGroups `xml:"measureGroups"`
|
|
|
|
Maps *xlsxMaps `xml:"maps"`
|
|
|
|
ExtLst *xlsxExtLst `xml:"extLst"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxCacheSource represents the description of data source whose data is
|
|
|
|
// stored in the pivot cache. The data source refers to the underlying rows or
|
|
|
|
// database records that provide the data for a PivotTable. You can create a
|
|
|
|
// PivotTable report from a SpreadsheetML table, an external database
|
|
|
|
// (including OLAP cubes), multiple SpreadsheetML worksheets, or another
|
|
|
|
// PivotTable.
|
|
|
|
type xlsxCacheSource struct {
|
2019-09-20 00:20:30 +08:00
|
|
|
Type string `xml:"type,attr"`
|
2019-10-16 01:03:29 +08:00
|
|
|
ConnectionID int `xml:"connectionId,attr,omitempty"`
|
2019-09-20 00:20:30 +08:00
|
|
|
WorksheetSource *xlsxWorksheetSource `xml:"worksheetSource"`
|
|
|
|
Consolidation *xlsxConsolidation `xml:"consolidation"`
|
|
|
|
ExtLst *xlsxExtLst `xml:"extLst"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxWorksheetSource represents the location of the source of the data that
|
|
|
|
// is stored in the cache.
|
|
|
|
type xlsxWorksheetSource struct {
|
|
|
|
RID string `xml:"http://schemas.openxmlformats.org/officeDocument/2006/relationships id,attr,omitempty"`
|
|
|
|
Ref string `xml:"ref,attr,omitempty"`
|
|
|
|
Name string `xml:"name,attr,omitempty"`
|
|
|
|
Sheet string `xml:"sheet,attr,omitempty"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxConsolidation represents the description of the PivotCache source using
|
|
|
|
// multiple consolidation ranges. This element is used when the source of the
|
|
|
|
// PivotTable is a collection of ranges in the workbook. The ranges are
|
|
|
|
// specified in the rangeSets collection. The logic for how the application
|
|
|
|
// consolidates the data in the ranges is application- defined.
|
|
|
|
type xlsxConsolidation struct {
|
2019-09-08 21:57:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxCacheFields represents the collection of field definitions in the
|
|
|
|
// source data.
|
|
|
|
type xlsxCacheFields struct {
|
|
|
|
Count int `xml:"count,attr"`
|
|
|
|
CacheField []*xlsxCacheField `xml:"cacheField"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxCacheField represent a single field in the PivotCache. This definition
|
|
|
|
// contains information about the field, such as its source, data type, and
|
|
|
|
// location within a level or hierarchy. The sharedItems element stores
|
|
|
|
// additional information about the data in this field. If there are no shared
|
|
|
|
// items, then values are stored directly in the pivotCacheRecords part.
|
|
|
|
type xlsxCacheField struct {
|
|
|
|
Name string `xml:"name,attr"`
|
|
|
|
Caption string `xml:"caption,attr,omitempty"`
|
|
|
|
PropertyName string `xml:"propertyName,attr,omitempty"`
|
|
|
|
ServerField bool `xml:"serverField,attr,omitempty"`
|
|
|
|
UniqueList bool `xml:"uniqueList,attr,omitempty"`
|
2019-10-16 01:03:29 +08:00
|
|
|
NumFmtID int `xml:"numFmtId,attr"`
|
2019-09-08 21:57:55 +08:00
|
|
|
Formula string `xml:"formula,attr,omitempty"`
|
|
|
|
SQLType int `xml:"sqlType,attr,omitempty"`
|
|
|
|
Hierarchy int `xml:"hierarchy,attr,omitempty"`
|
|
|
|
Level int `xml:"level,attr,omitempty"`
|
2019-09-20 00:20:30 +08:00
|
|
|
DatabaseField bool `xml:"databaseField,attr,omitempty"`
|
2019-09-08 21:57:55 +08:00
|
|
|
MappingCount int `xml:"mappingCount,attr,omitempty"`
|
|
|
|
MemberPropertyField bool `xml:"memberPropertyField,attr,omitempty"`
|
|
|
|
SharedItems *xlsxSharedItems `xml:"sharedItems"`
|
|
|
|
FieldGroup *xlsxFieldGroup `xml:"fieldGroup"`
|
2019-09-20 00:20:30 +08:00
|
|
|
MpMap *xlsxX `xml:"mpMap"`
|
|
|
|
ExtLst *xlsxExtLst `xml:"extLst"`
|
2019-09-08 21:57:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxSharedItems represents the collection of unique items for a field in
|
|
|
|
// the PivotCacheDefinition. The sharedItems complex type stores data type and
|
|
|
|
// formatting information about the data in a field. Items in the
|
|
|
|
// PivotCacheDefinition can be shared in order to reduce the redundancy of
|
|
|
|
// those values that are referenced in multiple places across all the
|
|
|
|
// PivotTable parts.
|
|
|
|
type xlsxSharedItems struct {
|
|
|
|
ContainsSemiMixedTypes bool `xml:"containsSemiMixedTypes,attr,omitempty"`
|
|
|
|
ContainsNonDate bool `xml:"containsNonDate,attr,omitempty"`
|
|
|
|
ContainsDate bool `xml:"containsDate,attr,omitempty"`
|
|
|
|
ContainsString bool `xml:"containsString,attr,omitempty"`
|
|
|
|
ContainsBlank bool `xml:"containsBlank,attr,omitempty"`
|
|
|
|
ContainsMixedTypes bool `xml:"containsMixedTypes,attr,omitempty"`
|
|
|
|
ContainsNumber bool `xml:"containsNumber,attr,omitempty"`
|
|
|
|
ContainsInteger bool `xml:"containsInteger,attr,omitempty"`
|
|
|
|
MinValue float64 `xml:"minValue,attr,omitempty"`
|
|
|
|
MaxValue float64 `xml:"maxValue,attr,omitempty"`
|
|
|
|
MinDate string `xml:"minDate,attr,omitempty"`
|
|
|
|
MaxDate string `xml:"maxDate,attr,omitempty"`
|
2019-09-20 00:20:30 +08:00
|
|
|
Count int `xml:"count,attr"`
|
2019-09-08 21:57:55 +08:00
|
|
|
LongText bool `xml:"longText,attr,omitempty"`
|
|
|
|
M *xlsxMissing `xml:"m"`
|
|
|
|
N *xlsxNumber `xml:"n"`
|
|
|
|
B *xlsxBoolean `xml:"b"`
|
|
|
|
E *xlsxError `xml:"e"`
|
|
|
|
S *xlsxString `xml:"s"`
|
|
|
|
D *xlsxDateTime `xml:"d"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxMissing represents a value that was not specified.
|
|
|
|
type xlsxMissing struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxNumber represents a numeric value in the PivotTable.
|
|
|
|
type xlsxNumber struct {
|
|
|
|
V float64 `xml:"v,attr"`
|
|
|
|
U bool `xml:"u,attr,omitempty"`
|
|
|
|
F bool `xml:"f,attr,omitempty"`
|
|
|
|
C string `xml:"c,attr,omitempty"`
|
|
|
|
Cp int `xml:"cp,attr,omitempty"`
|
|
|
|
In int `xml:"in,attr,omitempty"`
|
|
|
|
Bc string `xml:"bc,attr,omitempty"`
|
|
|
|
Fc string `xml:"fc,attr,omitempty"`
|
|
|
|
I bool `xml:"i,attr,omitempty"`
|
|
|
|
Un bool `xml:"un,attr,omitempty"`
|
|
|
|
St bool `xml:"st,attr,omitempty"`
|
|
|
|
B bool `xml:"b,attr,omitempty"`
|
|
|
|
Tpls *xlsxTuples `xml:"tpls"`
|
|
|
|
X *attrValInt `xml:"x"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxTuples represents members for the OLAP sheet data entry, also known as
|
|
|
|
// a tuple.
|
|
|
|
type xlsxTuples struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxBoolean represents a boolean value for an item in the PivotTable.
|
|
|
|
type xlsxBoolean struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxError represents an error value. The use of this item indicates that an
|
|
|
|
// error value is present in the PivotTable source. The error is recorded in
|
|
|
|
// the value attribute.
|
|
|
|
type xlsxError struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxString represents a character value in a PivotTable.
|
|
|
|
type xlsxString struct {
|
2020-09-11 00:45:52 +08:00
|
|
|
V string `xml:"v,attr"`
|
|
|
|
U bool `xml:"u,attr,omitempty"`
|
|
|
|
F bool `xml:"f,attr,omitempty"`
|
|
|
|
C string `xml:"c,attr,omitempty"`
|
|
|
|
Cp int `xml:"cp,attr,omitempty"`
|
|
|
|
In int `xml:"in,attr,omitempty"`
|
|
|
|
Bc string `xml:"bc,attr,omitempty"`
|
|
|
|
Fc string `xml:"fc,attr,omitempty"`
|
|
|
|
I bool `xml:"i,attr,omitempty"`
|
|
|
|
Un bool `xml:"un,attr,omitempty"`
|
|
|
|
St bool `xml:"st,attr,omitempty"`
|
|
|
|
B bool `xml:"b,attr,omitempty"`
|
|
|
|
Tpls *xlsxTuples `xml:"tpls"`
|
|
|
|
X *attrValInt `xml:"x"`
|
2019-09-08 21:57:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxDateTime represents a date-time value in the PivotTable.
|
|
|
|
type xlsxDateTime struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxFieldGroup represents the collection of properties for a field group.
|
|
|
|
type xlsxFieldGroup struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxCacheHierarchies represents the collection of OLAP hierarchies in the
|
|
|
|
// PivotCache.
|
|
|
|
type xlsxCacheHierarchies struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxKpis represents the collection of Key Performance Indicators (KPIs)
|
|
|
|
// defined on the OLAP server and stored in the PivotCache.
|
|
|
|
type xlsxKpis struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxTupleCache represents the cache of OLAP sheet data members, or tuples.
|
|
|
|
type xlsxTupleCache struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxCalculatedItems represents the collection of calculated items.
|
|
|
|
type xlsxCalculatedItems struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxCalculatedMembers represents the collection of calculated members in an
|
|
|
|
// OLAP PivotTable.
|
|
|
|
type xlsxCalculatedMembers struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxDimensions represents the collection of PivotTable OLAP dimensions.
|
|
|
|
type xlsxDimensions struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxMeasureGroups represents the collection of PivotTable OLAP measure
|
|
|
|
// groups.
|
|
|
|
type xlsxMeasureGroups struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
// xlsxMaps represents the PivotTable OLAP measure group - Dimension maps.
|
|
|
|
type xlsxMaps struct {
|
|
|
|
}
|