LibreOffice Module sc (master)  1
xepivot.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #pragma once
21 
22 #include "xerecord.hxx"
23 #include "xlpivot.hxx"
24 #include "xeroot.hxx"
25 
26 class ScDPObject;
27 class ScDPSaveData;
28 class ScDPSaveDimension;
29 class ScDPSaveMember;
31 struct ScDPNumGroupInfo;
32 
33 // Pivot cache
34 
36 class XclExpPCItem : public XclExpRecord, public XclPCItem
37 {
38 public:
39  explicit XclExpPCItem( const OUString& rText );
40  explicit XclExpPCItem( double fValue, const OUString& rText = OUString() );
41  explicit XclExpPCItem( const DateTime& rDateTime, const OUString& rText = OUString() );
42  explicit XclExpPCItem( sal_Int16 nValue );
43  explicit XclExpPCItem( bool bValue, const OUString& rText );
44 
45  sal_uInt16 GetTypeFlag() const { return mnTypeFlag; }
46 
47  bool EqualsText( std::u16string_view rText ) const;
48  bool EqualsDouble( double fValue ) const;
49  bool EqualsDateTime( const DateTime& rDateTime ) const;
50  bool EqualsBool( bool bValue ) const;
51 
52 private:
53  virtual void WriteBody( XclExpStream& rStrm ) override;
54 
55 private:
56  sal_uInt16 mnTypeFlag;
57 };
58 
59 class XclExpPCField : public XclExpRecord, public XclPCField, protected XclExpRoot
60 {
61 public:
63  explicit XclExpPCField( const XclExpRoot& rRoot,
64  sal_uInt16 nFieldIdx,
65  const ScDPObject& rDPObj, const ScRange& rRange );
67  explicit XclExpPCField( const XclExpRoot& rRoot,
68  sal_uInt16 nFieldIdx,
69  const ScDPObject& rDPObj, const ScDPSaveGroupDimension& rGroupDim,
70  const XclExpPCField& rBaseField );
71  virtual ~XclExpPCField() override;
72 
74  void SetGroupChildField( const XclExpPCField& rChildField );
75 
77  const OUString& GetFieldName() const { return maFieldInfo.maName; }
78 
80  sal_uInt16 GetItemCount() const;
82  const XclExpPCItem* GetItem( sal_uInt16 nItemIdx ) const;
84  sal_uInt16 GetItemIndex( std::u16string_view rItemName ) const;
85 
87  std::size_t GetIndexSize() const;
89  void WriteIndex( XclExpStream& rStrm, sal_uInt32 nSrcRow ) const;
90 
92  virtual void Save( XclExpStream& rStrm ) override;
93 
94 private:
96 
100  const XclExpPCItemList& GetVisItemList() const;
101 
103  void InitStandardField( const ScRange& rRange );
105  void InitStdGroupField( const XclExpPCField& rBaseField, const ScDPSaveGroupDimension& rGroupDim );
107  void InitNumGroupField( const ScDPObject& rDPObj, const ScDPNumGroupInfo& rNumInfo );
109  void InitDateGroupField( const ScDPObject& rDPObj, const ScDPNumGroupInfo& rDateInfo, sal_Int32 nDatePart );
110 
112  void InsertItemArrayIndex( size_t nListPos );
114  void InsertOrigItem( XclExpPCItem* pNewItem );
116  void InsertOrigTextItem( const OUString& rText );
118  void InsertOrigDoubleItem( double fValue, const OUString& rText );
120  void InsertOrigDateTimeItem( const DateTime& rDateTime, const OUString& rText );
122  void InsertOrigBoolItem( bool bValue, const OUString& rText );
123 
126  sal_uInt16 InsertGroupItem( XclExpPCItem* pNewItem );
128  void InsertNumDateGroupItems( const ScDPObject& rDPObj, const ScDPNumGroupInfo& rNumInfo, sal_Int32 nDatePart = 0 );
129 
131  void SetNumGroupLimit( const ScDPNumGroupInfo& rNumInfo );
134  void SetDateGroupLimit( const ScDPNumGroupInfo& rDateInfo, bool bUseStep );
135 
137  void Finalize();
138 
140  void WriteSxnumgroup( XclExpStream& rStrm );
142  void WriteSxgroupinfo( XclExpStream& rStrm );
143 
145  virtual void WriteBody( XclExpStream& rStrm ) override;
146 
147 private:
148  XclExpPCItemList maOrigItemList;
149  XclExpPCItemList maGroupItemList;
151  XclExpPCItemList maNumGroupLimits;
152  sal_uInt16 mnTypeFlags;
153 };
154 
156 {
157 public:
158  explicit XclExpPivotCache( const XclExpRoot& rRoot,
159  const ScDPObject& rDPObj, sal_uInt16 nListIdx );
160 
162  bool IsValid() const { return mbValid; }
164  bool HasItemIndexList() const;
165 
167  sal_uInt16 GetCacheIndex() const { return mnListIdx; }
168 
170  sal_uInt16 GetFieldCount() const;
172  const XclExpPCField* GetField( sal_uInt16 nFieldIdx ) const;
174  bool HasAddFields() const;
175 
177  bool HasEqualDataSource( const ScDPObject& rDPObj ) const;
178 
180  void Save( XclExpStream& rStrm );
181  static void SaveXml( XclExpXmlStream& rStrm );
182 
183 private:
185  void AddFields( const ScDPObject& rDPObj );
186 
188  void AddStdFields( const ScDPObject& rDPObj );
190  void AddGroupFields( const ScDPObject& rDPObj );
191 
193  void WriteDconref( XclExpStream& rStrm ) const;
195  void WriteDConName( XclExpStream& rStrm ) const;
196 
198  void WriteCacheStream();
200  void WriteSxdb( XclExpStream& rStrm ) const;
202  static void WriteSxdbex( XclExpStream& rStrm );
204  void WriteSxindexlistList( XclExpStream& rStrm ) const;
205 
206 private:
209 
211  XclExpPCFieldList maFieldList;
212  OUString maTabName;
213  OUString maSrcRangeName;
217  sal_uInt16 mnListIdx;
218  bool mbValid;
219 };
220 
222 
223 // Pivot table
224 
226 
228 typedef ::std::pair< sal_uInt16, sal_uInt16 > XclPTDataFieldPos;
229 
231 {
232 public:
233  explicit XclExpPTItem( const XclExpPCField& rCacheField, sal_uInt16 nCacheIdx );
234  explicit XclExpPTItem( sal_uInt16 nItemType, sal_uInt16 nCacheIdx );
235 
237  OUString GetItemName() const;
238 
240  void SetPropertiesFromMember( const ScDPSaveMember& rSaveMem );
241 
242 private:
244  virtual void WriteBody( XclExpStream& rStrm ) override;
245 
246 private:
249 };
250 
252 {
253 public:
254  explicit XclExpPTField( const XclExpPivotTable& rPTable, sal_uInt16 nCacheIdx );
255 
256  // data access ------------------------------------------------------------
257 
259  OUString GetFieldName() const;
263  sal_uInt16 GetFieldIndex() const { return maFieldInfo.mnCacheIdx; }
264 
266  sal_uInt16 GetLastDataInfoIndex() const;
267 
270  sal_uInt16 GetItemIndex( std::u16string_view rName, sal_uInt16 nDefaultIdx ) const;
271 
272  // fill data --------------------------------------------------------------
273 
275  void SetPropertiesFromDim( const ScDPSaveDimension& rSaveDim );
277  void SetDataPropertiesFromDim( const ScDPSaveDimension& rSaveDim );
278 
280  void AppendSubtotalItems();
281 
282  // records ----------------------------------------------------------------
283 
285  void WriteSxpiEntry( XclExpStream& rStrm ) const;
287  void WriteSxdi( XclExpStream& rStrm, sal_uInt16 nDataInfoIdx ) const;
288 
290  virtual void Save( XclExpStream& rStrm ) override;
291 
292 private:
294  XclExpPTItem* GetItemAcc( std::u16string_view rName );
295 
297  void AppendSubtotalItem( sal_uInt16 nItemType );
298 
300  void WriteSxvd( XclExpStream& rStrm ) const;
302  void WriteSxvdex( XclExpStream& rStrm ) const;
303 
304 private:
305 
311  std::vector< XclPTDataFieldInfo >
315 };
316 
318 {
319 public:
320  explicit XclExpPivotTable( const XclExpRoot& rRoot,
321  const ScDPObject& rDPObj, const XclExpPivotCache& rPCache );
322 
324  const XclExpPCField* GetCacheField( sal_uInt16 nCacheIdx ) const;
325 
327  SCTAB GetScTab() const { return mnOutScTab; }
328 
330  const XclExpPTField* GetField( sal_uInt16 nFieldIdx ) const;
332  const XclExpPTField* GetField( std::u16string_view rName ) const;
333 
336  sal_uInt16 GetDataFieldIndex( const OUString& rName, sal_uInt16 nDefaultIdx ) const;
337 
339  virtual void Save( XclExpStream& rStrm ) override;
340 
341 private:
343  XclExpPTField* GetFieldAcc( std::u16string_view rName );
345  XclExpPTField* GetFieldAcc( const ScDPSaveDimension& rSaveDim );
346 
347  // fill data --------------------------------------------------------------
348 
350  void SetPropertiesFromDP( const ScDPSaveData& rSaveData );
352  void SetFieldPropertiesFromDim( const ScDPSaveDimension& rSaveDim );
354  void SetDataFieldPropertiesFromDim( const ScDPSaveDimension& rSaveDim );
355 
357  void Finalize();
358 
359  // records ----------------------------------------------------------------
360 
362  void WriteSxview( XclExpStream& rStrm ) const;
364  static void WriteSxivd( XclExpStream& rStrm, const ScfUInt16Vec& rFields );
366  void WriteSxpi( XclExpStream& rStrm ) const;
368  void WriteSxdiList( XclExpStream& rStrm ) const;
370  static void WriteSxli( XclExpStream& rStrm, sal_uInt16 nLineCount, sal_uInt16 nIndexCount );
372  void WriteSxex( XclExpStream& rStrm ) const;
373 
374  void WriteQsiSxTag( XclExpStream& rStrm ) const;
376  void WriteSxViewEx9( XclExpStream& rStrm ) const;
377 
378 private:
381 
386  XclExpPTFieldList maFieldList;
390  std::vector< XclPTDataFieldPos >
394  bool mbValid;
395  bool mbFilterBtn;
396 };
397 
406 {
407 public:
408  explicit XclExpPivotTableManager( const XclExpRoot& rRoot );
409 
411  void CreatePivotTables();
412 
417 
421  void WritePivotTables( XclExpStream& rStrm, SCTAB nScTab );
422 
423 private:
426  const XclExpPivotCache* CreatePivotCache( const ScDPObject& rDPObj );
427 
428 private:
431 
433  XclExpPivotTableList maPTableList;
434 };
435 
436 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
const XclExpPCField * mpCacheField
Parent pivot table containing this field.
Definition: xepivot.hxx:307
void AppendSubtotalItems()
Appends special items describing the field subtotal entries.
Definition: xepivot.cxx:1103
void InsertItemArrayIndex(size_t nListPos)
Inserts the passed index into the item index array of original items.
Definition: xepivot.cxx:444
sal_uInt16 GetItemCount() const
Returns the number of visible items of this field.
Definition: xepivot.cxx:263
void SetPropertiesFromDim(const ScDPSaveDimension &rSaveDim)
Fills this field with row/column/page properties from the passed save dimension.
Definition: xepivot.cxx:1001
std::vector< XclPTDataFieldInfo > maDataInfoVec
Page field info (entry in SXPI record).
Definition: xepivot.hxx:312
ScRange maExpSrcRange
The original sheet source range.
Definition: xepivot.hxx:215
XclExpPTField maDataOrientField
Data field indexes.
Definition: xepivot.hxx:392
bool HasAddFields() const
Returns true, if this pivot cache contains non-standard fields (e.g.
Definition: xepivot.cxx:694
bool HasEqualDataSource(const ScDPObject &rDPObj) const
Returns true, if the passed DP object has the same data source as this cache.
Definition: xepivot.cxx:700
void WriteSxdiList(XclExpStream &rStrm) const
Writes all SXDI records containing info about the data fields.
Definition: xepivot.cxx:1487
XclExpPCItem(const OUString &rText)
Definition: xepivot.cxx:96
void SetGroupChildField(const XclExpPCField &rChildField)
Sets the passed field as direct grouping child field of this field.
Definition: xepivot.cxx:255
virtual void Save(XclExpStream &rStrm) override
Writes the pivot cache field and all items and other related records.
Definition: xepivot.cxx:300
Pivot table autoformat settings (SXVIEWEX9 record).
Definition: xlpivot.hxx:751
XclPTExtInfo maPTExtInfo
Info about the pivot table (SXVIEW record).
Definition: xepivot.hxx:384
This class is used to export Excel record streams.
Definition: xestream.hxx:72
sal_uInt16 mnListIdx
The range used to build the cache fields and items.
Definition: xepivot.hxx:217
void SetFieldPropertiesFromDim(const ScDPSaveDimension &rSaveDim)
Fills a pivot table field with all properties from the passed save dimension.
Definition: xepivot.cxx:1325
ScfUInt16Vec maIndexVec
List with grouping items.
Definition: xepivot.hxx:150
XclExpPivotTableList::RecordRefType XclExpPivotTableRef
Definition: xepivot.hxx:430
sal_uInt16 mnCacheIdx
Number of items of this field.
Definition: xlpivot.hxx:597
Extended information about a pivot table (SXEX record).
Definition: xlpivot.hxx:734
bool IsValid() const
Returns true, if the cache has been constructed successfully.
Definition: xepivot.hxx:162
void WriteSxpi(XclExpStream &rStrm) const
Writes the SXPI record containing page field info.
Definition: xepivot.cxx:1471
void CreatePivotTables()
Creates all pivot tables and caches from the Calc DataPilot objects.
Definition: xepivot.cxx:1630
XclExpPivotTable(const XclExpRoot &rRoot, const ScDPObject &rDPObj, const XclExpPivotCache &rPCache)
Definition: xepivot.cxx:1178
std::size_t GetIndexSize() const
Returns the size an item index needs to write out.
Definition: xepivot.cxx:282
void WriteSxex(XclExpStream &rStrm) const
Writes the SXEX records containing additional pivot table info.
Definition: xepivot.cxx:1521
const XclExpPivotTable & mrPTable
Definition: xepivot.hxx:306
const XclExpPCItem * mpCacheItem
Definition: xepivot.hxx:247
XclExpPCItemList maGroupItemList
List with original items.
Definition: xepivot.hxx:149
XclExpRecordList< XclExpPivotCache > maPCacheList
Definition: xepivot.hxx:432
static void WriteSxivd(XclExpStream &rStrm, const ScfUInt16Vec &rFields)
Writes an SXIVD record for row field or column field order.
Definition: xepivot.cxx:1460
void SetPropertiesFromMember(const ScDPSaveMember &rSaveMem)
Fills this item with properties from the passed save member.
Definition: xepivot.cxx:921
ScfUInt16Vec maRowFields
All fields in pivot cache order.
Definition: xepivot.hxx:387
bool mbFilterBtn
true = The pivot table is valid for export.
Definition: xepivot.hxx:395
const XclExpPCItem * GetItem(sal_uInt16 nItemIdx) const
Returns the specified pivot cache item (returns visible items in groupings).
Definition: xepivot.cxx:268
Represents a field in a pivot cache.
Definition: xlpivot.hxx:476
void WriteSxpiEntry(XclExpStream &rStrm) const
Writes an entry for an SXPI record containing own page field info.
Definition: xepivot.cxx:1121
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
Definition: xepivot.cxx:155
XclExpRecordList< XclExpPCItem > XclExpPCItemList
Definition: xepivot.hxx:95
void WritePivotTables(XclExpStream &rStrm, SCTAB nScTab)
Writes all pivot tables of the specified Calc sheet.
Definition: xepivot.cxx:1656
OUString GetFieldName() const
Returns the name of this field.
Definition: xepivot.cxx:954
XclExpRecordRef CreatePivotCachesRecord()
Creates a record wrapper for exporting all pivot caches.
Definition: xepivot.cxx:1641
rtl::Reference< XclExpPivotCache > XclExpPivotCacheRef
Definition: xepivot.hxx:221
const OUString & GetFieldName() const
Returns the name of this cache field.
Definition: xepivot.hxx:77
XclPTPageFieldInfo maPageInfo
Extended field info (SXVDEX record).
Definition: xepivot.hxx:310
Access to global data from other classes.
Definition: xeroot.hxx:112
virtual void Save(XclExpStream &rStrm) override
Writes the entire pivot table field.
Definition: xepivot.cxx:1137
XclExpPTItem(const XclExpPCField &rCacheField, sal_uInt16 nCacheIdx)
Definition: xepivot.cxx:898
SCTAB GetScTab() const
Returns the output range of the pivot table.
Definition: xepivot.hxx:327
SCTAB mnOutScTab
Special data field orientation field.
Definition: xepivot.hxx:393
const XclExpPCField * GetField(sal_uInt16 nFieldIdx) const
Returns the specified pivot cache field.
Definition: xepivot.cxx:689
XclExpRecordList< XclExpPTItem > maItemList
List of extended data field info (SXDI records).
Definition: xepivot.hxx:314
XclExpPCItemList maOrigItemList
Definition: xepivot.hxx:148
sal_uInt16 InsertGroupItem(XclExpPCItem *pNewItem)
Inserts an item into the grouping item list.
Definition: xepivot.cxx:504
Contains extended data for a pivot table field (SXVDEX record).
Definition: xlpivot.hxx:620
bool HasItemIndexList() const
Returns true, if the item index list will be written.
Definition: xepivot.cxx:679
void SetNumGroupLimit(const ScDPNumGroupInfo &rNumInfo)
Inserts the SXDOUBLE items that specify the limits for a numeric grouping.
Definition: xepivot.cxx:546
void WriteSxvdex(XclExpStream &rStrm) const
Writes the SXVDEX record containing additional settings.
Definition: xepivot.cxx:1171
const XclExpPivotCache * CreatePivotCache(const ScDPObject &rDPObj)
Finds an existing (if enabled in mbShareCaches) or creates a new pivot cache.
Definition: xepivot.cxx:1666
Base class for all Excel records.
Definition: xerecord.hxx:37
void WriteSxdi(XclExpStream &rStrm, sal_uInt16 nDataInfoIdx) const
Writes an SXDI records containing info about a data field.
Definition: xepivot.cxx:1126
Contains data for a pivot table page field (part of SXPI record).
Definition: xlpivot.hxx:657
bool EqualsDateTime(const DateTime &rDateTime) const
Definition: xepivot.cxx:145
sal_uInt16 GetTypeFlag() const
Definition: xepivot.hxx:45
void InsertOrigDoubleItem(double fValue, const OUString &rText)
Inserts an original value item, if it is not contained already.
Definition: xepivot.cxx:471
::std::pair< sal_uInt16, sal_uInt16 > XclPTDataFieldPos
Data field position specifying the pivot table field index (first) and data info index (second)...
Definition: xepivot.hxx:225
void InitDateGroupField(const ScDPObject &rDPObj, const ScDPNumGroupInfo &rDateInfo, sal_Int32 nDatePart)
Initializes a date grouping field.
Definition: xepivot.cxx:428
void SetDateGroupLimit(const ScDPNumGroupInfo &rDateInfo, bool bUseStep)
Inserts the SXDATETIME/SXINTEGER items that specify the limits for a date grouping.
Definition: xepivot.cxx:555
Contains data for a pivot table field (SXVD record).
Definition: xlpivot.hxx:591
XclExpPivotTableList maPTableList
List of all pivot caches.
Definition: xepivot.hxx:433
void SetDataFieldPropertiesFromDim(const ScDPSaveDimension &rSaveDim)
Fills a pivot table data field with all properties from the passed save dimension.
Definition: xepivot.cxx:1366
void WriteSxindexlistList(XclExpStream &rStrm) const
Writes the SXINDEXLIST record list containing the item index table.
Definition: xepivot.cxx:846
XclPTFieldExtInfo maFieldExtInfo
General field info (SXVD record).
Definition: xepivot.hxx:309
sal_uInt16 GetItemIndex(std::u16string_view rName, sal_uInt16 nDefaultIdx) const
Returns the list index of an item by its name.
Definition: xepivot.cxx:966
OUString GetItemName() const
Returns the internal name of this item.
Definition: xepivot.cxx:916
XclExpPCItemList maNumGroupLimits
Indexes into maItemList.
Definition: xepivot.hxx:151
void AddFields(const ScDPObject &rDPObj)
Adds all pivot cache fields.
Definition: xepivot.cxx:733
void WriteSxview(XclExpStream &rStrm) const
Writes the SXVIEW record starting the pivot table.
Definition: xepivot.cxx:1453
void AppendSubtotalItem(sal_uInt16 nItemType)
Appends a special item describing a field subtotal entry.
Definition: xepivot.cxx:1158
ScRange maOrigSrcRange
Range name for source data.
Definition: xepivot.hxx:214
void AddStdFields(const ScDPObject &rDPObj)
Adds all standard pivot cache fields based on source data.
Definition: xepivot.cxx:741
XclExpRecordList< XclExpPivotTable > XclExpPivotTableList
Definition: xepivot.hxx:429
void Finalize()
Initializes flags and item count fields.
Definition: xepivot.cxx:565
sal_uInt16 GetItemIndex(std::u16string_view rItemName) const
Returns the index of a pivot cache item, or EXC_PC_NOITEM on error.
Definition: xepivot.cxx:273
bool mbValid
List index in pivot cache buffer.
Definition: xepivot.hxx:218
ScfUInt16Vec maColFields
Row field indexes.
Definition: xepivot.hxx:388
The main class for pivot table export.
Definition: xepivot.hxx:405
virtual ~XclExpPCField() override
Definition: xepivot.cxx:251
XclExpRecordRef CreatePivotTablesRecord(SCTAB nScTab)
Creates a record wrapper for exporting all pivot tables of the specified sheet.
Definition: xepivot.cxx:1646
const XclExpPCItemList & GetVisItemList() const
Returns the item list that contains the visible items.
Definition: xepivot.cxx:319
Contains data for a pivot table data item (SXVI record).
Definition: xlpivot.hxx:574
void WriteIndex(XclExpStream &rStrm, sal_uInt32 nSrcRow) const
Writes the item index at the passed source row position as part of the SXINDEXLIST record...
Definition: xepivot.cxx:287
XclExpPCFieldList maFieldList
Pivot cache settings (SXDB record).
Definition: xepivot.hxx:211
void InsertOrigTextItem(const OUString &rText)
Inserts an original text item, if it is not contained already.
Definition: xepivot.cxx:458
void InsertOrigItem(XclExpPCItem *pNewItem)
Inserts an original source item.
Definition: xepivot.cxx:450
void WriteSxnumgroup(XclExpStream &rStrm)
Writes an SXNUMGROUP record and the additional items for a numeric grouping field.
Definition: xepivot.cxx:583
XclExpPTField(const XclExpPivotTable &rPTable, sal_uInt16 nCacheIdx)
Definition: xepivot.cxx:939
const int nIndexCount
Definition: qproform.cxx:564
sal_uInt16 GetCacheIndex() const
Returns the list index of the cache used in pivot table records.
Definition: xepivot.hxx:167
XclExpPivotCache(const XclExpRoot &rRoot, const ScDPObject &rDPObj, sal_uInt16 nListIdx)
Definition: xepivot.cxx:617
OUString maSrcRangeName
Name of source data sheet.
Definition: xepivot.hxx:213
bool EqualsDouble(double fValue) const
Definition: xepivot.cxx:140
void WriteCacheStream()
Creates the pivot cache storage stream and writes the cache.
Definition: xepivot.cxx:811
void SetPropertiesFromDP(const ScDPSaveData &rSaveData)
Fills internal members with all properties from the passed save data.
Definition: xepivot.cxx:1311
XclExpPCFieldList::RecordRefType XclExpPCFieldRef
Definition: xepivot.hxx:208
ScRange maDocSrcRange
The exported sheet source range.
Definition: xepivot.hxx:216
virtual void WriteBody(XclExpStream &rStrm) override
Writes the SXVI record body describing the pivot table item.
Definition: xepivot.cxx:934
void Save(XclExpStream &rStrm)
Writes related records into Workbook stream and creates the pivot cache storage stream.
Definition: xepivot.cxx:710
XclPCFieldInfo maFieldInfo
Definition: xlpivot.hxx:515
void WriteSxdb(XclExpStream &rStrm) const
Writes the SXDB record.
Definition: xepivot.cxx:831
const XclExpPivotCache & mrPCache
Definition: xepivot.hxx:382
bool EqualsBool(bool bValue) const
Definition: xepivot.cxx:150
XclExpPTFieldList::RecordRefType XclExpPTFieldRef
Definition: xepivot.hxx:380
Represents a data item in a pivot cache containing data of any type.
Definition: xepivot.hxx:36
void WriteSxvd(XclExpStream &rStrm) const
Writes the SXVD record introducing the field.
Definition: xepivot.cxx:1164
XclExpPCField(const XclExpRoot &rRoot, sal_uInt16 nFieldIdx, const ScDPObject &rDPObj, const ScRange &rRange)
Creates a standard pivot cache field, filled from sheet source data.
Definition: xepivot.cxx:191
static void WriteSxli(XclExpStream &rStrm, sal_uInt16 nLineCount, sal_uInt16 nIndexCount)
Writes a dummy SXLI records containing item layout info.
Definition: xepivot.cxx:1497
void InsertOrigBoolItem(bool bValue, const OUString &rText)
Inserts an original boolean item, if it is not contained already.
Definition: xepivot.cxx:493
XclPTViewEx9Info maPTViewEx9Info
Extended info about the pivot table (SXEX record).
Definition: xepivot.hxx:385
::std::vector< sal_uInt16 > ScfUInt16Vec
Definition: ftools.hxx:255
XclExpPTItem * GetItemAcc(std::u16string_view rName)
Returns an item by its name.
Definition: xepivot.cxx:1149
ScfUInt16Vec maPageFields
Column field indexes.
Definition: xepivot.hxx:389
XclExpPivotTableManager(const XclExpRoot &rRoot)
Definition: xepivot.cxx:1625
Contains data for a pivot cache (SXDB record).
Definition: xlpivot.hxx:525
XclExpRecordList< XclExpPCField > XclExpPCFieldList
Definition: xepivot.hxx:207
void WriteSxViewEx9(XclExpStream &rStrm) const
Writes the SX_AUTOFORMAT records with the autoformat id and header layout.
Definition: xepivot.cxx:1582
void InitStdGroupField(const XclExpPCField &rBaseField, const ScDPSaveGroupDimension &rGroupDim)
Initializes a standard grouping field.
Definition: xepivot.cxx:363
void AddGroupFields(const ScDPObject &rDPObj)
Adds all grouping pivot cache fields.
Definition: xepivot.cxx:756
XclPCInfo maPCInfo
Definition: xepivot.hxx:210
Represents a new group dimension whose dimension ID is higher than the highest source dimension ID...
Definition: dpdimsave.hxx:90
Contains data for a pivot table (SXVIEW record).
Definition: xlpivot.hxx:705
void WriteDConName(XclExpStream &rStrm) const
DCONNAME record contains range name source.
Definition: xepivot.cxx:803
XclExpPTFieldList maFieldList
The selected autoformat (SXVIEWEX9)
Definition: xepivot.hxx:386
XclPTInfo maPTInfo
The pivot cache this pivot table bases on.
Definition: xepivot.hxx:383
void Finalize()
Initializes any data after processing the entire source DataPilot.
Definition: xepivot.cxx:1377
void InsertNumDateGroupItems(const ScDPObject &rDPObj, const ScDPNumGroupInfo &rNumInfo, sal_Int32 nDatePart=0)
Generates and inserts all visible items for numeric or date grouping.
Definition: xepivot.cxx:510
XclPTFieldInfo maFieldInfo
The referred pivot cache field.
Definition: xepivot.hxx:308
XclPTItemInfo maItemInfo
The referred pivot cache item.
Definition: xepivot.hxx:248
void InitStandardField(const ScRange &rRange)
Initializes a standard field.
Definition: xepivot.cxx:326
OUString maTabName
List of all pivot cache fields.
Definition: xepivot.hxx:212
static void WriteSxdbex(XclExpStream &rStrm)
Writes the SXDBEX record.
Definition: xepivot.cxx:838
const XclExpPCField * GetCacheField(sal_uInt16 nCacheIdx) const
Returns a pivot cache field.
Definition: xepivot.cxx:1235
void WritePivotCaches(XclExpStream &rStrm)
Writes all pivot caches (all Workbook records and cache streams).
Definition: xepivot.cxx:1651
void SetDataPropertiesFromDim(const ScDPSaveDimension &rSaveDim)
Fills this field with data field properties from the passed save dimension.
Definition: xepivot.cxx:1069
virtual void Save(XclExpStream &rStrm) override
Writes the entire pivot table.
Definition: xepivot.cxx:1262
std::vector< XclPTDataFieldPos > maDataFields
Page field indexes.
Definition: xepivot.hxx:391
void InsertOrigDateTimeItem(const DateTime &rDateTime, const OUString &rText)
Inserts an original date/time item, if it is not contained already.
Definition: xepivot.cxx:482
static void SaveXml(XclExpXmlStream &rStrm)
Definition: xepivot.cxx:729
sal_uInt16 GetFieldCount() const
Returns the number of pivot cache fields.
Definition: xepivot.cxx:684
sal_uInt16 GetFieldIndex() const
Returns the pivot table field list index of this field.
Definition: xepivot.hxx:263
const XclExpPTField * GetField(sal_uInt16 nFieldIdx) const
Returns a pivot table field by its name.
Definition: xepivot.cxx:1240
void WriteDconref(XclExpStream &rStrm) const
Writes the DCONREF record containing the source range.
Definition: xepivot.cxx:790
void WriteSxgroupinfo(XclExpStream &rStrm)
Writes an SXGROUPINFO record describing the item order in grouping fields.
Definition: xepivot.cxx:599
XclExpRecordList< XclExpPTField > XclExpPTFieldList
Definition: xepivot.hxx:379
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the SXFIELD record for this field.
Definition: xepivot.cxx:612
sal_uInt16 mnTypeFlag
Definition: xepivot.hxx:56
void SvStream & rStrm
bool mbValid
Sheet index of the output range.
Definition: xepivot.hxx:394
OUString maName
Definition: xlpivot.hxx:437
sal_uInt16 GetLastDataInfoIndex() const
Returns the index of the last inserted data info struct.
Definition: xepivot.cxx:959
void WriteQsiSxTag(XclExpStream &rStrm) const
Definition: xepivot.cxx:1528
void InitNumGroupField(const ScDPObject &rDPObj, const ScDPNumGroupInfo &rNumInfo)
Initializes a numeric grouping field.
Definition: xepivot.cxx:404
XclExpPTField * GetFieldAcc(std::u16string_view rName)
Returns a pivot table field by its name.
Definition: xepivot.cxx:1289
Base class for single records with any content.
Definition: xerecord.hxx:141
sal_Int16 SCTAB
Definition: types.hxx:22
sal_uInt16 mnTypeFlags
List with limit values for numeric grouping.
Definition: xepivot.hxx:152
sal_Int16 nValue
bool EqualsText(std::u16string_view rText) const
Definition: xepivot.cxx:135
sal_uInt16 GetDataFieldIndex(const OUString &rName, sal_uInt16 nDefaultIdx) const
Returns the data-field-only index of the first data field with the passed name.
Definition: xepivot.cxx:1250
Represents a data item of any type in a pivot cache.
Definition: xlpivot.hxx:366