LibreOffice Module sc (master)  1
xetable.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 #ifndef INCLUDED_SC_SOURCE_FILTER_INC_XETABLE_HXX
21 #define INCLUDED_SC_SOURCE_FILTER_INC_XETABLE_HXX
22 
23 #include "xltable.hxx"
24 
25 #include <vector>
26 #include "xladdress.hxx"
27 #include "xerecord.hxx"
28 #include "xestyle.hxx"
29 #include "xlformula.hxx"
30 
31 #include <map>
32 #include <memory>
33 #include <unordered_map>
34 #include <o3tl/sorted_vector.hxx>
35 
36 class XclExtLst;
37 
38 /* ============================================================================
39 Export of cell tables including row and column description.
40 - Managing all used and formatted cells in a sheet.
41 - Row and column properties, i.e. width/height, visibility.
42 - Find default row formatting and default column formatting.
43 - Merged cell ranges.
44 ============================================================================ */
45 
46 // Helper records for cell records
47 
50 {
51 public:
52  explicit XclExpStringRec( const XclExpRoot& rRoot, const OUString& rResult );
53 
54 private:
55  virtual void WriteBody( XclExpStream& rStrm ) override;
56 
57 private:
59 };
60 
61 // Additional records for special formula ranges
62 
65 {
66 public:
68  bool IsBasePos( sal_uInt16 nXclCol, sal_uInt32 nXclRow ) const;
69 
71  virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const = 0;
73  virtual bool IsVolatile() const = 0;
74 
75 protected:
77  explicit XclExpRangeFmlaBase(
78  sal_uInt16 nRecId, sal_uInt32 nRecSize, const ScAddress& rScPos );
80  explicit XclExpRangeFmlaBase(
81  sal_uInt16 nRecId, sal_uInt32 nRecSize, const ScRange& rScRange );
82 
84  void Extend( const ScAddress& rScPos );
85 
87  void WriteRangeAddress( XclExpStream& rStrm ) const;
88 
89 protected:
92 };
93 
95 
96 // Array formulas =============================================================
97 
98 class ScTokenArray;
99 
108 {
109 public:
110  explicit XclExpArray( const XclTokenArrayRef& xTokArr, const ScRange& rScRange );
111 
113  virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const override;
115  virtual bool IsVolatile() const override;
116 
117 private:
118  virtual void WriteBody( XclExpStream& rStrm ) override;
119 
120 private:
122 };
123 
125 
127 class XclExpArrayBuffer : protected XclExpRoot
128 {
129 public:
130  explicit XclExpArrayBuffer( const XclExpRoot& rRoot );
131 
133  XclExpArrayRef CreateArray( const ScTokenArray& rScTokArr, const ScRange& rScRange );
135  XclExpArrayRef FindArray( const ScTokenArray& rScTokArr, const ScAddress& rBasePos ) const;
136 
137 private:
138  typedef ::std::map< ScAddress, XclExpArrayRef > XclExpArrayMap;
139  XclExpArrayMap maRecMap;
140 };
141 
142 // Shared formulas ============================================================
143 
152 {
153 public:
155  explicit XclExpShrfmla( const XclTokenArrayRef& xTokArr, const ScAddress& rScPos );
156 
158  void ExtendRange( const ScAddress& rScPos );
159 
161  virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const override;
163  virtual bool IsVolatile() const override;
164 
165 private:
166  virtual void WriteBody( XclExpStream& rStrm ) override;
167 
168 private:
171 };
172 
174 
177 {
178 public:
179  explicit XclExpShrfmlaBuffer( const XclExpRoot& rRoot );
180 
187  XclExpShrfmlaRef CreateOrExtendShrfmla( const ScFormulaCell& rScCell, const ScAddress& rScPos );
188 
189 private:
195  bool IsValidTokenArray( const ScTokenArray& rArray ) const;
196 
197  typedef std::unordered_map<const ScTokenArray*, XclExpShrfmlaRef> TokensType;
199 
200  TokensType maRecMap;
201  BadTokenArraysType maBadTokens;
202 };
203 
204 // Multiple operations ========================================================
205 
208 {
209 public:
210  explicit XclExpTableop( const ScAddress& rScPos,
211  const XclMultipleOpRefs& rRefs, sal_uInt8 nScMode );
212 
215  bool TryExtend( const ScAddress& rScPos, const XclMultipleOpRefs& rRefs );
216 
218  void Finalize();
219 
221  virtual XclTokenArrayRef CreateCellTokenArray( const XclExpRoot& rRoot ) const override;
223  virtual bool IsVolatile() const override;
225  virtual void Save( XclExpStream& rStrm ) override;
226 
227 private:
229  bool IsAppendable( sal_uInt16 nXclCol, sal_uInt16 nXclRow ) const;
230 
232  virtual void WriteBody( XclExpStream& rStrm ) override;
233 
234 private:
235  sal_uInt16 mnLastAppXclCol;
236  sal_uInt16 mnColInpXclCol;
237  sal_uInt32 mnColInpXclRow;
238  sal_uInt16 mnRowInpXclCol;
239  sal_uInt32 mnRowInpXclRow;
241  bool mbValid;
242 };
243 
245 
248 {
249 public:
250  explicit XclExpTableopBuffer( const XclExpRoot& rRoot );
251 
257  const ScTokenArray& rScTokArr, const ScAddress& rScPos );
258 
260  void Finalize();
261 
262 private:
264  XclExpTableopRef TryCreate( const ScAddress& rScPos, const XclMultipleOpRefs& rRefs );
265 
266 private:
268 };
269 
270 // Cell records
271 
274 {
275 public:
277  const XclAddress& GetXclPos() const { return maXclPos; }
279  sal_uInt16 GetXclCol() const { return maXclPos.mnCol; }
281  sal_uInt32 GetXclRow() const { return maXclPos.mnRow; }
282 
284  virtual sal_uInt16 GetLastXclCol() const = 0;
286  virtual sal_uInt32 GetFirstXFId() const = 0;
288  virtual bool IsEmpty() const = 0;
290  virtual bool IsMultiLineText() const;
291 
293  virtual bool TryMerge( const XclExpCellBase& rCell );
296  virtual void ConvertXFIndexes( const XclExpRoot& rRoot ) = 0;
298  virtual void GetBlankXFIndexes( ScfUInt16Vec& rXFIndexes ) const;
300  virtual void RemoveUnusedBlankCells( const ScfUInt16Vec& rXFIndexes );
301 
302 protected:
303  explicit XclExpCellBase(
304  sal_uInt16 nRecId, std::size_t nContSize, const XclAddress& rXclPos );
305 
307  void SetXclCol( sal_uInt16 nXclCol ) { maXclPos.mnCol = nXclCol; }
308 
309 private:
311 };
312 
314 
315 // Single cell records ========================================================
316 
319 {
320 public:
322  virtual sal_uInt16 GetLastXclCol() const override;
324  virtual sal_uInt32 GetFirstXFId() const override;
326  virtual bool IsEmpty() const override;
328  virtual void ConvertXFIndexes( const XclExpRoot& rRoot ) override;
330  virtual void Save( XclExpStream& rStrm ) override;
331 
332 protected:
333  explicit XclExpSingleCellBase( sal_uInt16 nRecId, std::size_t nContSize,
334  const XclAddress& rXclPos, sal_uInt32 nXFId );
335 
336  explicit XclExpSingleCellBase( const XclExpRoot& rRoot,
337  sal_uInt16 nRecId, std::size_t nContSize, const XclAddress& rXclPos,
338  const ScPatternAttr* pPattern, sal_Int16 nScript, sal_uInt32 nForcedXFId );
339 
340  void SetContSize( std::size_t nContSize ) { mnContSize = nContSize; }
341  std::size_t GetContSize() const { return mnContSize; }
342 
343  void SetXFId( sal_uInt32 nXFId ) { maXFId.mnXFId = nXFId; }
344  sal_uInt32 GetXFId() const { return maXFId.mnXFId; }
345 
346 private:
348  virtual void WriteBody( XclExpStream& rStrm ) override;
350  virtual void WriteContents( XclExpStream& rStrm ) = 0;
351 
352 private:
354  std::size_t mnContSize;
355 };
356 
359 {
360 public:
361  explicit XclExpNumberCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
362  const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
363  double fValue );
364 
365  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
366 private:
367  virtual void WriteContents( XclExpStream& rStrm ) override;
368 
369 private:
370  double mfValue;
371 };
372 
375 {
376 public:
377  explicit XclExpBooleanCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
378  const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
379  bool bValue );
380 
381  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
382 private:
383  virtual void WriteContents( XclExpStream& rStrm ) override;
384 
385 private:
386  bool mbValue;
387 };
388 
390 class EditTextObject;
391 
399 {
400 public:
402  explicit XclExpLabelCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
403  const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
404  const OUString& rStr );
405 
407  explicit XclExpLabelCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
408  const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
409  const EditTextObject* pEditText, XclExpHyperlinkHelper& rHlinkHelper );
410 
412  virtual bool IsMultiLineText() const override;
413 
414  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
415 private:
417  void Init( const XclExpRoot& rRoot,
418  const ScPatternAttr* pPattern, XclExpStringRef const & xText );
419 
420  virtual void WriteContents( XclExpStream& rStrm ) override;
421 
422 private:
424  sal_uInt32 mnSstIndex;
425  bool mbLineBreak;
426 };
427 
428 class ScFormulaCell;
429 
432 {
433 public:
434  explicit XclExpFormulaCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
435  const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
436  const ScFormulaCell& rScFmlaCell,
437  XclExpArrayBuffer& rArrayBfr,
438  XclExpShrfmlaBuffer& rShrfmlaBfr,
439  XclExpTableopBuffer& rTableopBfr );
440 
442  virtual void Save( XclExpStream& rStrm ) override;
443  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
444 
445 private:
446  virtual void WriteContents( XclExpStream& rStrm ) override;
447 
448 private:
453 };
454 
455 // Multiple cell records ======================================================
456 
458 {
459  sal_uInt16 mnCount;
460 
461  explicit XclExpMultiXFId( sal_uInt32 nXFId, sal_uInt16 nCount = 1 ) :
462  XclExpXFId( nXFId ), mnCount( nCount ) {}
463 };
464 
467 {
468 public:
470  virtual sal_uInt16 GetLastXclCol() const override;
472  virtual sal_uInt32 GetFirstXFId() const override;
474  virtual bool IsEmpty() const override;
475 
477  virtual void ConvertXFIndexes( const XclExpRoot& rRoot ) override;
480  virtual void Save( XclExpStream& rStrm ) override;
481  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
482 
483 protected:
484  explicit XclExpMultiCellBase( sal_uInt16 nRecId, sal_uInt16 nMulRecId,
485  std::size_t nContSize, const XclAddress& rXclPos );
486 
488  sal_uInt16 GetCellCount() const;
489 
491  void AppendXFId( const XclExpMultiXFId& rXFId );
493  void AppendXFId( const XclExpRoot& rRoot,
494  const ScPatternAttr* pPattern, sal_uInt16 nScript,
495  sal_uInt32 nForcedXFId, sal_uInt16 nCount = 1 );
496 
498  bool TryMergeXFIds( const XclExpMultiCellBase& rCell );
500  void GetXFIndexes( ScfUInt16Vec& rXFIndexes ) const;
501 
504  void RemoveUnusedXFIndexes( const ScfUInt16Vec& rXFIndexes );
505 
506 private:
509  virtual void WriteContents( XclExpStream& rStrm, sal_uInt16 nRelCol ) = 0;
510  virtual void WriteXmlContents( XclExpXmlStream& rStrm, const XclAddress& rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol ) = 0;
511 
512 private:
513  typedef ::std::vector< XclExpMultiXFId > XclExpMultiXFIdDeq;
514 
515  sal_uInt16 mnMulRecId;
516  std::size_t mnContSize;
517  XclExpMultiXFIdDeq maXFIds;
518 };
519 
522 {
523 public:
524  explicit XclExpBlankCell( const XclAddress& rXclPos, const XclExpMultiXFId& rXFId );
525 
526  explicit XclExpBlankCell( const XclExpRoot& rRoot,
527  const XclAddress& rXclPos, sal_uInt16 nLastXclCol,
528  const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId );
529 
531  virtual bool TryMerge( const XclExpCellBase& rCell ) override;
533  virtual void GetBlankXFIndexes( ScfUInt16Vec& rXFIndexes ) const override;
535  virtual void RemoveUnusedBlankCells( const ScfUInt16Vec& rXFIndexes ) override;
536 
537 private:
539  virtual void WriteContents( XclExpStream& rStrm, sal_uInt16 nRelCol ) override;
540  virtual void WriteXmlContents( XclExpXmlStream& rStrm, const XclAddress& rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol ) override;
541 };
542 
545 {
546 public:
547  explicit XclExpRkCell( const XclExpRoot& rRoot, const XclAddress& rXclPos,
548  const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
549  sal_Int32 nRkValue );
550 
552  virtual bool TryMerge( const XclExpCellBase& rCell ) override;
553 
554 private:
556  virtual void WriteContents( XclExpStream& rStrm, sal_uInt16 nRelCol ) override;
557  virtual void WriteXmlContents( XclExpXmlStream& rStrm, const XclAddress& rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol ) override;
558 
559 private:
561 };
562 
563 // Rows and Columns
564 
565 class ScOutlineArray;
566 
569 {
570 public:
572  bool IsCollapsed() const { return mbCurrCollapse; }
574  sal_uInt8 GetLevel() const { return ::std::min( mnCurrLevel, EXC_OUTLINE_MAX ); }
575 
576 protected:
579  explicit XclExpOutlineBuffer( const XclExpRoot& rRoot, bool bRows );
580 
582  void UpdateColRow( SCCOLROW nScPos );
583 
584 private:
587  {
589  bool mbHidden;
590  explicit XclExpLevelInfo() : mnScEndPos( 0 ), mbHidden( false ) {}
591  };
592 
594  std::vector< XclExpLevelInfo >
598 };
599 
602 {
603 public:
604  explicit XclExpColOutlineBuffer( const XclExpRoot& rRoot ) :
605  XclExpOutlineBuffer( rRoot, false ) {}
606 
608  void Update( SCCOL nScCol )
609  { UpdateColRow( static_cast< SCCOLROW >( nScCol ) ); }
610 };
611 
614 {
615 public:
616  explicit XclExpRowOutlineBuffer( const XclExpRoot& rRoot ) :
617  XclExpOutlineBuffer( rRoot, true ) {}
618 
620  void Update( SCROW nScRow )
621  { UpdateColRow( static_cast< SCCOLROW >( nScRow ) ); }
622 };
623 
625 class XclExpGuts : public XclExpRecord
626 {
627 public:
628  explicit XclExpGuts( const XclExpRoot& rRoot );
629 
630 private:
631  virtual void WriteBody( XclExpStream& rStrm ) override;
632 
633 private:
634  sal_uInt16 mnColLevels;
635  sal_uInt16 mnColWidth;
636  sal_uInt16 mnRowLevels;
637  sal_uInt16 mnRowWidth;
638 };
639 
642 {
643 public:
644  explicit XclExpDimensions( const XclExpRoot& rRoot );
645 
647  void SetDimensions(
648  sal_uInt16 nFirstUsedXclCol, sal_uInt32 nFirstUsedXclRow,
649  sal_uInt16 nFirstFreeXclCol, sal_uInt32 nFirstFreeXclRow );
650 
651  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
652 private:
654  virtual void WriteBody( XclExpStream& rStrm ) override;
655 
656 private:
658  sal_uInt32 mnFirstUsedXclRow;
659  sal_uInt32 mnFirstFreeXclRow;
660  sal_uInt16 mnFirstUsedXclCol;
661  sal_uInt16 mnFirstFreeXclCol;
662 };
663 
680 {
681 public:
682  explicit XclExpDefcolwidth( const XclExpRoot& rRoot );
683 
685  bool IsDefWidth( sal_uInt16 nXclColWidth ) const;
686 
688  void SetDefWidth( sal_uInt16 nXclColWidth, bool bXLS );
689 
690  virtual void Save(XclExpStream& rStrm) override;
691 };
692 
699 class XclExpColinfo : public XclExpRecord, protected XclExpRoot
700 {
701 public:
703  explicit XclExpColinfo( const XclExpRoot& rRoot,
704  SCCOL nScCol, SCROW nLastScRow,
705  XclExpColOutlineBuffer& rOutlineBfr );
706 
708  void ConvertXFIndexes();
709 
713  bool TryMerge( const XclExpColinfo& rColInfo );
714 
716  sal_uInt16 GetColWidth() const { return mnWidth; }
718  sal_uInt16 GetXFIndex() const { return maXFId.mnXFIndex; }
720  sal_uInt16 GetColCount() const { return mnLastXclCol - mnFirstXclCol + 1; }
721 
723  bool IsDefault( const XclExpDefcolwidth& rDefColWidth );
724 
725  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
726 
727 private:
729  virtual void WriteBody( XclExpStream& rStrm ) override;
730 
731 private:
734  sal_uInt16 mnWidth;
735  sal_uInt16 mnScWidth;
736  sal_uInt16 mnFlags;
738  sal_uInt16 mnFirstXclCol;
739  sal_uInt16 mnLastXclCol;
740 };
741 
750 {
751 public:
752  explicit XclExpColinfoBuffer( const XclExpRoot& rRoot );
753 
756  void Initialize( SCROW nLastScRow );
759  void Finalize( ScfUInt16Vec& rXFIndexes, bool bXLS );
760 
762  virtual void Save( XclExpStream& rStrm ) override;
763  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
765  double GetDefColWidth() const { return maDefcolwidth.GetValue(); }
766 
767 private:
770 
771  XclExpColinfoList maColInfos;
775 };
776 
777 class XclExpRow;
778 
781 {
782  sal_uInt16 mnFlags;
783  sal_uInt16 mnHeight;
784 
785  explicit XclExpDefaultRowData();
786  explicit XclExpDefaultRowData( const XclExpRow& rRow );
787 
789  bool IsHidden() const { return ::get_flag( mnFlags, EXC_DEFROW_HIDDEN ); }
791  bool IsUnsynced() const { return ::get_flag( mnFlags, EXC_DEFROW_UNSYNCED ); }
792 };
793 
796 {
797 public:
798  explicit XclExpDefrowheight();
799 
801  void SetDefaultData( const XclExpDefaultRowData& rDefData );
803 private:
805  virtual void WriteBody( XclExpStream& rStrm ) override;
806 
807 private:
809 };
810 
822 class XclExpRow : public XclExpRecord, protected XclExpRoot
823 {
824 public:
828  explicit XclExpRow( const XclExpRoot& rRoot, sal_uInt32 nXclRow,
829  XclExpRowOutlineBuffer& rOutlineBfr, bool bAlwaysEmpty, bool bHidden, sal_uInt16 nHeight );
830 
832  sal_uInt32 GetXclRow() const { return mnXclRow; }
834  sal_uInt16 GetHeight() const { return mnHeight; }
836  bool IsEmpty() const { return maCellList.IsEmpty(); }
842  bool IsEnabled() const { return mbEnabled; }
843 
845  void AppendCell( XclExpCellRef const & xCell, bool bIsMergedBase );
846 
848  void Finalize( const ScfUInt16Vec& rColXFIndexes,
849  bool bUpdateProgress );
850 
853  sal_uInt16 GetFirstUsedXclCol() const;
856  sal_uInt16 GetFirstFreeXclCol() const;
857 
862  bool IsDefaultable() const;
866  void DisableIfDefault( const XclExpDefaultRowData& rDefRowData );
867 
869  void WriteCellList( XclExpStream& rStrm );
870 
872  virtual void Save( XclExpStream& rStrm ) override;
873  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
874 
875  sal_uInt32 GetXclRowRpt() const { return mnXclRowRpt; }
876  void SetXclRowRpt( sal_uInt32 nRpt ){ mnXclRowRpt = nRpt; }
877 private:
879  void InsertCell( XclExpCellRef xCell, size_t nPos, bool bIsMergedBase );
880 
882  virtual void WriteBody( XclExpStream& rStrm ) override;
883 
884 private:
887  sal_uInt32 mnXclRow;
888  sal_uInt16 mnHeight;
889  sal_uInt16 mnFlags;
890  sal_uInt16 mnXFIndex;
892  sal_uInt32 mnXclRowRpt;
893  sal_uInt32 mnCurrentRow;
895  bool mbEnabled;
896 };
897 
905 class XclExpRowBuffer : public XclExpRecordBase, protected XclExpRoot
906 {
907 public:
908  explicit XclExpRowBuffer( const XclExpRoot& rRoot );
909 
911  void AppendCell( XclExpCellRef const & xCell, bool bIsMergedBase );
913  void CreateRows( SCROW nFirstFreeScRow );
914 
918  void Finalize( XclExpDefaultRowData& rDefRowData, const ScfUInt16Vec& rColXFIndexes );
919 
921  virtual void Save( XclExpStream& rStrm ) override;
922  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
923 
926 
927 private:
931  XclExpRow& GetOrCreateRow( sal_uInt32 nXclRow, bool bRowAlwaysEmpty );
932 
933 private:
934  typedef std::shared_ptr<XclExpRow> RowRef;
935  typedef ::std::map<sal_uInt32, RowRef> RowMap;
936 
937  RowMap maRowMap;
941 };
942 
943 // Cell Table
944 
945 class XclExpNote;
946 class XclExpMergedcells;
947 class XclExpHyperlink;
948 class XclExpDval;
949 
974 class XclExpCellTable : public XclExpRecordBase, protected XclExpRoot
975 {
976 public:
977  explicit XclExpCellTable( const XclExpRoot& rRoot );
978 
980  void Finalize(bool bXLS);
981 
986  XclExpRecordRef CreateRecord( sal_uInt16 nRecId ) const;
988  virtual void Save( XclExpStream& rStrm ) override;
989  virtual void SaveXml( XclExpXmlStream& rStrm ) override;
990 
991 private:
994 
1001 
1007  XclExpDefrowhRef mxDefrowheight;
1009  XclExpNoteListRef mxNoteList;
1010  XclExpMergedcellsRef mxMergedcells;
1011  XclExpHyperlinkRef mxHyperlinkList;
1012  XclExpDvalRef mxDval;
1013  XclExtLstRef mxExtLst;
1014 };
1015 
1016 #endif
1017 
1018 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual bool IsVolatile() const =0
Derived classes return true, if the own formula contains volatile functions.
XclExpStringRef mxText
Definition: xetable.hxx:423
sal_uInt16 GetFirstUsedXclCol() const
Returns the column index of the first used cell in this row.
Definition: xetable.cxx:2040
::std::map< sal_uInt32, RowRef > RowMap
Definition: xetable.hxx:935
virtual sal_uInt32 GetFirstXFId() const override
Return the XF identifier of the cell.
Definition: xetable.cxx:589
XclExpCellBase(sal_uInt16 nRecId, std::size_t nContSize, const XclAddress &rXclPos)
Definition: xetable.cxx:536
void Finalize()
Finalizes all contained TABLEOP records.
Definition: xetable.cxx:477
XclExpBlankCell(const XclAddress &rXclPos, const XclExpMultiXFId &rXFId)
Definition: xetable.cxx:1303
XclExpColinfoBuffer maColInfoBfr
Definition: xetable.hxx:1002
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:668
sal_uInt32 mnColInpXclRow
Column index of column input cell.
Definition: xetable.hxx:237
bool mbCustomWidth
The XF identifier for column default format.
Definition: xetable.hxx:733
virtual bool IsEmpty() const override
Returns true, if this record does not contain at least one valid cell.
Definition: xetable.cxx:1115
XclExpShrfmla(const XclTokenArrayRef &xTokArr, const ScAddress &rScPos)
Creates a SHRFMLA record that consists of the passed cell address only.
Definition: xetable.cxx:180
XclExpStringRec(const XclExpRoot &rRoot, const OUString &rResult)
Definition: xetable.cxx:54
virtual void WriteContents(XclExpStream &rStrm, sal_uInt16 nRelCol) override
Writes the remaining contents of the specified cell (without XF index).
Definition: xetable.cxx:1336
XclExpNumberCell(const XclExpRoot &rRoot, const XclAddress &rXclPos, const ScPatternAttr *pPattern, sal_uInt32 nForcedXFId, double fValue)
Definition: xetable.cxx:617
sal_uInt16 mnColWidth
Number of visible column outline levels.
Definition: xetable.hxx:635
Data about an outline level.
Definition: xetable.hxx:586
void AppendCell(XclExpCellRef const &xCell, bool bIsMergedBase)
Appends the passed cell object to this row.
Definition: xetable.cxx:1884
bool IsEmpty() const
Returns true, if this row does not contain at least one valid cell.
Definition: xetable.hxx:836
Base class for buffers containing row or column outline data.
Definition: xetable.hxx:568
virtual bool IsEmpty() const =0
Derived classes return true, if this record does not contain at least one valid cell.
bool IsAppendable(sal_uInt16 nXclCol, sal_uInt16 nXclRow) const
Returns true, if the passed cell position can be appended to this record.
Definition: xetable.cxx:422
This class is used to export Excel record streams.
Definition: xestream.hxx:71
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:639
sal_uInt16 GetXclCol() const
Returns the (first) Excel column index of the cell(s).
Definition: xetable.hxx:279
virtual void WriteContents(XclExpStream &rStrm) override
Derived classes write the contents of the specified cell (without XF index).
Definition: xetable.cxx:1038
virtual bool IsMultiLineText() const
Derived classes return whether the cell contains multi-line text.
Definition: xetable.cxx:543
XclExpArrayBuffer maArrayBfr
Rows and cell records.
Definition: xetable.hxx:1004
sal_uInt32 mnCurrentRow
Definition: xetable.hxx:893
void Init(const XclExpRoot &rRoot, const ScPatternAttr *pPattern, XclExpStringRef const &xText)
Initializes the record contents.
Definition: xetable.cxx:723
XclExpLabelCell(const XclExpRoot &rRoot, const XclAddress &rXclPos, const ScPatternAttr *pPattern, sal_uInt32 nForcedXFId, const OUString &rStr)
Constructs the record from an unformatted Calc string cell.
Definition: xetable.cxx:688
XclExpDimensions maDimensions
Buffer for row outline groups.
Definition: xetable.hxx:939
sal_uInt16 mnMulRecId
Definition: xetable.hxx:515
The outline buffer for row outlines.
Definition: xetable.hxx:613
virtual void Save(XclExpStream &rStrm) override
Writes cell address, XF index, and calls WriteContents() for each cell.
Definition: xetable.cxx:604
virtual bool IsMultiLineText() const override
Returns true if the cell contains multi-line text.
Definition: xetable.cxx:718
XclExpBooleanCell(const XclExpRoot &rRoot, const XclAddress &rXclPos, const ScPatternAttr *pPattern, sal_uInt32 nForcedXFId, bool bValue)
Definition: xetable.cxx:659
sal_uInt16 mnCount
Definition: xetable.hxx:459
const Type & GetValue() const
Returns the value of the record.
Definition: xerecord.hxx:209
Base class for all cell records not supporting multiple contents.
Definition: xetable.hxx:318
virtual void WriteXmlContents(XclExpXmlStream &rStrm, const XclAddress &rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol)=0
XclExpRow(const XclExpRoot &rRoot, sal_uInt32 nXclRow, XclExpRowOutlineBuffer &rOutlineBfr, bool bAlwaysEmpty, bool bHidden, sal_uInt16 nHeight)
Constructs the ROW record and converts the Calc row settings.
Definition: xetable.cxx:1846
rtl::Reference< XclExpDval > XclExpDvalRef
Definition: xetable.hxx:999
virtual sal_uInt16 GetLastXclCol() const override
Returns the column index of the last cell this record describes.
Definition: xetable.cxx:1105
rtl::Reference< XclExpDefrowheight > XclExpDefrowhRef
Definition: xetable.hxx:995
ScFormulaCell & mrScFmlaCell
Definition: xetable.hxx:449
const XclAddress & GetXclPos() const
Returns the (first) address of the cell(s).
Definition: xetable.hxx:277
sal_uInt32 mnXclRow
List of cell records for this row.
Definition: xetable.hxx:887
Represents an RK or MULRK record that describes cells with a compressed double values.
Definition: xetable.hxx:544
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the record.
Definition: xetable.cxx:1840
void Finalize(ScfUInt16Vec &rXFIndexes, bool bXLS)
Converts the XF identifiers into the Excel XF indexes and merges equal columns.
Definition: xetable.cxx:1732
sal_uInt16 mnRowWidth
Number of visible row outline levels.
Definition: xetable.hxx:637
const sal_uInt16 EXC_DEFROW_UNSYNCED
Definition: xltable.hxx:115
double GetDefColWidth() const
Definition: xetable.hxx:765
sal_uInt32 mnFirstFreeXclRow
First used row.
Definition: xetable.hxx:659
Represents the DEFCOLWIDTH record containing the default column width of a sheet. ...
Definition: xetable.hxx:679
Represents a NOTE record containing the relevant data of a cell note.
Definition: xeescher.hxx:339
void Update(SCROW nScRow)
Updates the current state by processing the settings of the passed Calc row.
Definition: xetable.hxx:620
virtual void WriteBody(XclExpStream &rStrm) override
Writes cell address, XF index, and calls WriteContents() for each cell.
Definition: xetable.cxx:611
void SetDefWidth(sal_uInt16 nXclColWidth, bool bXLS)
Sets the passed column width (in 1/256 character width) as default width.
Definition: xetable.cxx:1577
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:1799
XclExpDimensions(const XclExpRoot &rRoot)
Definition: xetable.cxx:1485
XclExpRecordList< XclExpColinfo > XclExpColinfoList
Definition: xetable.hxx:768
sal_uInt32 mnRow
Definition: xladdress.hxx:33
Contains the column settings for a range of columns.
Definition: xetable.hxx:699
Represents a BOOLERR record that describes a cell with a Boolean value.
Definition: xetable.hxx:374
XclExpRecordRef CreateRecord(sal_uInt16 nRecId) const
Returns the reference to an internal record specified by the passed record id.
Definition: xetable.cxx:2697
bool mbEnabled
true = Do not add blank cells in Finalize().
Definition: xetable.hxx:895
XclExpRowOutlineBuffer maOutlineBfr
Definition: xetable.hxx:938
sal_uInt8 mnHighestOutlineLevel
Buffer for column outline groups.
Definition: xetable.hxx:774
void Finalize()
Finalizes the record.
Definition: xetable.cxx:372
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of this COLINFO record.
Definition: xetable.cxx:1670
sal_uInt16 mnFlags
Row height in twips.
Definition: xetable.hxx:889
void ConvertXFIndexes()
Converts the XF identifier into the Excel XF index.
Definition: xetable.cxx:1642
Represents a BLANK or MULBLANK record that describes empty but formatted cells.
Definition: xetable.hxx:521
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the DIMENSIONS record.
Definition: xetable.cxx:1533
sal_uInt16 GetColCount() const
Returns the number of columns represented by this record.
Definition: xetable.hxx:720
std::size_t mnContSize
Record ID for multiple record variant.
Definition: xetable.hxx:516
sal_uInt16 GetHeight() const
Returns the height of the row in twips.
Definition: xetable.hxx:834
XclExpRecordRef mxStringRec
Additional record for matrix/shared formulas.
Definition: xetable.hxx:452
sal_uInt8 mnOutlineLevel
Default row formatting.
Definition: xetable.hxx:891
Contains COLINFO records for all columns of a Calc sheet.
Definition: xetable.hxx:749
sal_uInt32 GetXclRow() const
Returns the Excel row index of the cell.
Definition: xetable.hxx:281
virtual void WriteContents(XclExpStream &rStrm)=0
Derived classes write the contents of the specified cell (without XF index).
virtual XclTokenArrayRef CreateCellTokenArray(const XclExpRoot &rRoot) const override
Creates and returns the token array for a corresponding FORMULA cell record.
Definition: xetable.cxx:122
bool TryExtend(const ScAddress &rScPos, const XclMultipleOpRefs &rRefs)
Returns true, if the cell range has been extended to the passed position.
Definition: xetable.cxx:308
const ScOutlineArray * mpScOLArray
Definition: xetable.hxx:593
XclExpDefrowhRef mxDefrowheight
Buffer for TABLEOP records.
Definition: xetable.hxx:1007
void SetDimensions(sal_uInt16 nFirstUsedXclCol, sal_uInt32 nFirstUsedXclRow, sal_uInt16 nFirstFreeXclCol, sal_uInt32 nFirstFreeXclRow)
Sets the used area to the record.
Definition: xetable.cxx:1503
const XclExpRoot & mrRoot
Definition: xetable.hxx:657
sal_uInt8 mnOutlineLevel
Additional column flags.
Definition: xetable.hxx:737
sal_uInt16 mnLastXclCol
Index to first column.
Definition: xetable.hxx:739
sal_uInt16 mnFirstUsedXclCol
First unused row after used area.
Definition: xetable.hxx:660
XclExpArrayBuffer(const XclExpRoot &rRoot)
Definition: xetable.cxx:140
sal_uInt8 mnUsedCount
The token array of a shared formula.
Definition: xetable.hxx:170
const sal_uInt8 EXC_OUTLINE_MAX
Definition: xltable.hxx:29
XclExpRecordList< XclExpTableop > maTableopList
Definition: xetable.hxx:267
Represents an ARRAY record that contains the token array of a matrix formula.
Definition: xetable.hxx:107
void WriteRangeAddress(XclExpStream &rStrm) const
Writes the range address covered by this record.
Definition: xetable.cxx:109
XclExpMultiCellBase(sal_uInt16 nRecId, sal_uInt16 nMulRecId, std::size_t nContSize, const XclAddress &rXclPos)
Definition: xetable.cxx:1097
virtual bool IsVolatile() const override
Returns true, if the array formula contains volatile functions.
Definition: xetable.cxx:127
sal_uInt32 mnSstIndex
The cell text.
Definition: xetable.hxx:424
Access to global data from other classes.
Definition: xeroot.hxx:113
bool TryMergeXFIds(const XclExpMultiCellBase &rCell)
Tries to merge the XF ID list of the passed cell with the own list.
Definition: xetable.cxx:1254
sal_uInt16 mnHeight
Default flags for unspecified rows.
Definition: xetable.hxx:783
XclExpColinfoList::RecordRefType XclExpColinfoRef
Definition: xetable.hxx:769
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW
Definition: types.hxx:24
virtual bool TryMerge(const XclExpCellBase &rCell) override
Tries to merge the contents of the passed cell to own data.
Definition: xetable.cxx:1358
Helper to create HLINK records during creation of formatted cell strings.
Definition: xehelper.hxx:175
XclExpTableopRef TryCreate(const ScAddress &rScPos, const XclMultipleOpRefs &rRefs)
Tries to create a new TABLEOP record, if rRefs contains valid references.
Definition: xetable.cxx:483
void DisableIfDefault(const XclExpDefaultRowData &rDefRowData)
Disables this row, if it is defaultable and has the passed default format.
Definition: xetable.cxx:2057
XclExpSingleCellBase(sal_uInt16 nRecId, std::size_t nContSize, const XclAddress &rXclPos, sal_uInt32 nXFId)
Definition: xetable.cxx:565
sal_uInt16 GetCellCount() const
Returns the number of cells this record represents.
Definition: xetable.cxx:1232
std::shared_ptr< XclExpRow > RowRef
Definition: xetable.hxx:934
Represents a SHRFMLA record that contains the token array of a shared formula.
Definition: xetable.hxx:151
std::vector< XclExpLevelInfo > maLevelInfos
Pointer to Calc outline array.
Definition: xetable.hxx:595
int nCount
virtual void ConvertXFIndexes(const XclExpRoot &rRoot) override
Convert all XF identifiers into the Excel XF indexes.
Definition: xetable.cxx:1120
void WriteCellList(XclExpStream &rStrm)
Writes all cell records of this row.
Definition: xetable.cxx:2065
sal_uInt16 mnWidth
True = Column width is different from default width.
Definition: xetable.hxx:734
virtual sal_uInt16 GetLastXclCol() const =0
Derived classes return the column index of the last contained cell.
XclExpColOutlineBuffer maOutlineBfr
The DEFCOLWIDTH record.
Definition: xetable.hxx:773
sal_uInt16 GetColWidth() const
Returns the Excel width of the column(s).
Definition: xetable.hxx:716
XclExtLstRef mxExtLst
Data validation with DVAL and DV records.
Definition: xetable.hxx:1013
XclExpShrfmlaBuffer maShrfmlaBfr
Buffer for ARRAY records.
Definition: xetable.hxx:1005
Represents a DEFROWHEIGHT record containing default format for unused rows.
Definition: xetable.hxx:795
Base class for all Excel records.
Definition: xerecord.hxx:39
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:2723
sal_uInt8 mnScMode
Row index of row input cell.
Definition: xetable.hxx:240
The outline buffer for column outlines.
Definition: xetable.hxx:601
XclExpHyperlinkRef mxHyperlinkList
MERGEDCELLS record for merged cell ranges.
Definition: xetable.hxx:1011
virtual XclTokenArrayRef CreateCellTokenArray(const XclExpRoot &rRoot) const override
Creates and returns the token array for a corresponding FORMULA cell record.
Definition: xetable.cxx:403
virtual void ConvertXFIndexes(const XclExpRoot &rRoot) override
Converts the XF identifier into the Excel XF index.
Definition: xetable.cxx:599
bool IsCollapsed() const
Returns true, if a collapsed group ends at the last processed position.
Definition: xetable.hxx:572
::std::vector< XclExpMultiXFId > XclExpMultiXFIdDeq
Definition: xetable.hxx:513
bool IsBasePos(sal_uInt16 nXclCol, sal_uInt32 nXclRow) const
Returns true, if the passed cell position is equal to own base position.
Definition: xetable.cxx:94
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
Definition: xetable.cxx:63
void ExtendRange(const ScAddress &rScPos)
Extends the cell range to include the passed cell address.
Definition: xetable.cxx:187
void GetXFIndexes(ScfUInt16Vec &rXFIndexes) const
Inserts the Excel XF index(es) into the passed vector.
Definition: xetable.cxx:1264
virtual void GetBlankXFIndexes(ScfUInt16Vec &rXFIndexes) const
Derived classes for blank cells insert the Excel XF index(es) into the passed vector.
Definition: xetable.cxx:553
void SetDefaultData(const XclExpDefaultRowData &rDefData)
Sets the passed default data as current record contents.
Definition: xetable.cxx:1835
sal_uInt32 mnRowInpXclRow
Column index of row input cell.
Definition: xetable.hxx:239
bool mbLineBreak
Index into Shared String Table (only used for BIFF8).
Definition: xetable.hxx:425
bool IsDefaultable() const
Returns true, if this row may be omitted by using the DEFROWHEIGHT record.
Definition: xetable.cxx:2050
virtual void WriteXmlContents(XclExpXmlStream &rStrm, const XclAddress &rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol) override
Definition: xetable.cxx:1340
XclTokenArrayRef mxTokArr
Definition: xetable.hxx:121
rtl::Reference< XclExpHyperlinkList > XclExpHyperlinkRef
Definition: xetable.hxx:998
bool IsDefault(const XclExpDefcolwidth &rDefColWidth)
Returns true, if the column has default format and width.
Definition: xetable.cxx:1647
XclExpDimensions & GetDimensions()
Definition: xetable.hxx:924
XclExpArray(const XclTokenArrayRef &xTokArr, const ScRange &rScRange)
Definition: xetable.cxx:116
sal_uInt16 mnColInpXclCol
Column index of last appended cell.
Definition: xetable.hxx:236
sal_uInt16 mnHeight
Excel row index of this row.
Definition: xetable.hxx:888
bool TryMerge(const XclExpColinfo &rColInfo)
Tries to merge this record with the passed record.
Definition: xetable.cxx:1656
virtual void WriteContents(XclExpStream &rStrm, sal_uInt16 nRelCol) override
Writes the remaining contents of the specified cell (without XF index).
Definition: xetable.cxx:1384
sal_uInt32 GetXFId() const
Definition: xetable.hxx:344
sal_uInt16 mnFirstFreeXclCol
First used column.
Definition: xetable.hxx:661
A record with a single value of type Type.
Definition: xerecord.hxx:199
XclExpFormulaCell(const XclExpRoot &rRoot, const XclAddress &rXclPos, const ScPatternAttr *pPattern, sal_uInt32 nForcedXFId, const ScFormulaCell &rScFmlaCell, XclExpArrayBuffer &rArrayBfr, XclExpShrfmlaBuffer &rShrfmlaBfr, XclExpTableopBuffer &rTableopBfr)
Definition: xetable.cxx:811
Base class for all cell records supporting multiple contents.
Definition: xetable.hxx:466
virtual void WriteContents(XclExpStream &rStrm) override
Derived classes write the contents of the specified cell (without XF index).
Definition: xetable.cxx:792
sal_uInt16 GetFirstFreeXclCol() const
Returns the column index of the first unused cell following all used cells in this row...
Definition: xetable.cxx:2045
XclExpTableopBuffer(const XclExpRoot &rRoot)
Definition: xetable.cxx:447
XclExpMultiXFIdDeq maXFIds
Data size of contents for one cell.
Definition: xetable.hxx:517
bool IsUnsynced() const
Returns true, if the rows have a manually set height by default.
Definition: xetable.hxx:791
TokensType maRecMap
Definition: xetable.hxx:200
This class contains the DV record list following the DVAL record.
Definition: xecontent.hxx:353
Caches all ARRAY records.
Definition: xetable.hxx:127
bool mbCurrCollapse
Highest level of an open group for current position.
Definition: xetable.hxx:597
XclExpGuts(const XclExpRoot &rRoot)
Definition: xetable.cxx:1451
sal_Int16 SCCOL
Definition: types.hxx:22
sal_uInt16 mnFlags
Calc width of the column.
Definition: xetable.hxx:736
void UpdateColRow(SCCOLROW nScPos)
Updates the current state by processing the settings at the passed Calc position. ...
Definition: xetable.cxx:1407
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:1513
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
Definition: xetable.cxx:1480
XclExpMultiXFId(sal_uInt32 nXFId, sal_uInt16 nCount=1)
Number of XF identifiers.
Definition: xetable.hxx:461
XclExpTableopRef CreateOrExtendTableop(const ScTokenArray &rScTokArr, const ScAddress &rScPos)
Tries to update an existing or to create a new TABLEOP record.
Definition: xetable.cxx:452
sal_uInt16 mnXFIndex
Flags for the ROW record.
Definition: xetable.hxx:890
XclExpArrayRef FindArray(const ScTokenArray &rScTokArr, const ScAddress &rBasePos) const
Tries to find an ARRAY record that corresponds to an ocMatRef token.
Definition: xetable.cxx:156
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the ROW record.
Definition: xetable.cxx:2105
void Initialize(SCROW nLastScRow)
Initializes the buffer: finds settings and formatting of all columns.
Definition: xetable.cxx:1719
rtl::Reference< XclExpCellBase > XclExpCellRef
Definition: xetable.hxx:313
Represents a STRING record that contains the result of a string formula.
Definition: xetable.hxx:49
void CreateRows(SCROW nFirstFreeScRow)
Forces insertion of all ROW records before the passed row.
Definition: xetable.cxx:2159
XclExpCellTable(const XclExpRoot &rRoot)
Definition: xetable.cxx:2431
rtl::Reference< XclExpRangeFmlaBase > XclExpRangeFmlaRef
Definition: xetable.hxx:94
XclExpNoteListRef mxNoteList
GUTS record for outline areas.
Definition: xetable.hxx:1009
bool get_flag(Type nBitField, Type nMask)
Returns true, if at least one of the bits set in nMask is set in nBitField.
Definition: ftools.hxx:73
Collects all rows which contain all cells of a sheet.
Definition: xetable.hxx:905
The base class of all cell records.
Definition: xetable.hxx:273
This class contains the cell contents and more of an entire sheet.
Definition: xetable.hxx:974
bool IsDefWidth(sal_uInt16 nXclColWidth) const
Returns true, if the own default width exactly matches the passed width.
Definition: xetable.cxx:1566
XclExpStringRef mxResult
Definition: xetable.hxx:58
virtual XclTokenArrayRef CreateCellTokenArray(const XclExpRoot &rRoot) const override
Creates and returns the token array for a corresponding FORMULA cell record.
Definition: xetable.cxx:193
void Finalize(XclExpDefaultRowData &rDefRowData, const ScfUInt16Vec &rColXFIndexes)
Converts all XF identifiers into the Excel XF indexes and calculates default formats.
Definition: xetable.cxx:2190
Represents a TABLEOP record for a multiple operations range.
Definition: xetable.hxx:207
virtual void Save(XclExpStream &rStrm) override
Writes the FORMULA record and additional records related to the formula.
Definition: xetable.cxx:911
sal_uInt16 mnColLevels
Definition: xetable.hxx:634
virtual void Save(XclExpStream &rStrm) override
Writes the record header and calls WriteBody().
Definition: xetable.cxx:1599
void Finalize(bool bXLS)
Converts all XF identifiers into the Excel XF indexes and calculates default formats.
Definition: xetable.cxx:2675
sal_uInt16 mnCol
Definition: xladdress.hxx:32
sal_uInt32 GetXclRow() const
Returns the excel row index of this ROW record.
Definition: xetable.hxx:832
void RemoveUnusedXFIndexes(const ScfUInt16Vec &rXFIndexes)
Removes unused Excel XF index(es).
Definition: xetable.cxx:1275
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:2360
sal_uInt16 mnRowInpXclCol
Row index of column input cell.
Definition: xetable.hxx:238
const sal_uInt16 EXC_ROW_HIDDEN
Definition: xltable.hxx:84
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
Definition: xetable.cxx:132
virtual void RemoveUnusedBlankCells(const ScfUInt16Vec &rXFIndexes)
Derived classes for blank cells remove unused Excel XF index(es).
Definition: xetable.cxx:558
sal_uInt32 mnXclRowRpt
Outline Level of row (for OOXML)
Definition: xetable.hxx:892
A 2D cell address struct with Excel column and row indexes.
Definition: xladdress.hxx:30
XclExpDefaultRowData()
Default height for unspecified rows.
Definition: xetable.cxx:1810
XclExpRow & GetOrCreateRow(sal_uInt32 nXclRow, bool bRowAlwaysEmpty)
Returns access to the specified ROW record.
Definition: xetable.cxx:2375
Contains all possible default row settings.
Definition: xetable.hxx:780
const sal_uInt16 EXC_DEFROW_HIDDEN
Definition: xltable.hxx:116
void AppendXFId(const XclExpMultiXFId &rXFId)
Appends the passed XF identifier nCount times to the list of XF identifiers.
Definition: xetable.cxx:1238
sal_uInt16 GetXFIndex() const
Returns the final Excel XF index of the column(s).
Definition: xetable.hxx:718
std::shared_ptr< XclTokenArray > XclTokenArrayRef
Definition: xlformula.hxx:417
rtl::Reference< XclExpNoteList > XclExpNoteListRef
Definition: xetable.hxx:996
XclExpColinfoBuffer(const XclExpRoot &rRoot)
Definition: xetable.cxx:1711
virtual bool IsEmpty() const override
Returns true, if this record does not contain at least one valid cell.
Definition: xetable.cxx:594
sal_uInt8 GetHighestOutlineLevel() const
Definition: xetable.hxx:764
Represents a FORMULA record that describes a cell with a formula.
Definition: xetable.hxx:431
virtual bool TryMerge(const XclExpCellBase &rCell)
Derived classes try to merge the contents of the passed cell to own data.
Definition: xetable.cxx:548
sal_uInt8 mnCurrLevel
Info for current row and all levels.
Definition: xetable.hxx:596
virtual sal_uInt32 GetFirstXFId() const override
Return the XF identifier of the first contained cell.
Definition: xetable.cxx:1110
XclExpTableop(const ScAddress &rScPos, const XclMultipleOpRefs &rRefs, sal_uInt8 nScMode)
Definition: xetable.cxx:295
bool IsEnabled() const
Returns true, if this row is enabled (will be exported).
Definition: xetable.hxx:842
Base record for additional range formula records (i.e.
Definition: xetable.hxx:64
bool IsValidTokenArray(const ScTokenArray &rArray) const
Check for presence of token that's not allowed in Excel's shared formula.
Definition: xetable.cxx:214
rtl::Reference< XclExpMergedcells > XclExpMergedcellsRef
Definition: xetable.hxx:997
XclExpRowBuffer(const XclExpRoot &rRoot)
Definition: xetable.cxx:2145
XclExpDefcolwidth maDefcolwidth
List of COLINFO records.
Definition: xetable.hxx:772
virtual bool IsVolatile() const override
Returns true, if the shared formula contains volatile functions.
Definition: xetable.cxx:198
XclExpDefaultRowData & GetDefaultData()
Definition: xetable.hxx:802
virtual void GetBlankXFIndexes(ScfUInt16Vec &rXFIndexes) const override
Inserts the Excel XF index(es) into the passed vector.
Definition: xetable.cxx:1326
sal_Int32 SCROW
Definition: types.hxx:18
std::size_t mnContSize
The XF identifier of the cell formatting.
Definition: xetable.hxx:354
void SetContSize(std::size_t nContSize)
Definition: xetable.hxx:340
XclExpDefcolwidth(const XclExpRoot &rRoot)
Definition: xetable.cxx:1560
virtual bool TryMerge(const XclExpCellBase &rCell) override
Tries to merge the contents of the passed cell to own data.
Definition: xetable.cxx:1320
Represents a GUTS record containing the level count of row and column outlines.
Definition: xetable.hxx:625
XclExpOutlineBuffer(const XclExpRoot &rRoot, bool bRows)
Constructs the outline buffer.
Definition: xetable.cxx:1392
XclAddress maBaseXclPos
Range described by this record.
Definition: xetable.hxx:91
std::unordered_map< const ScTokenArray *, XclExpShrfmlaRef > TokensType
Definition: xetable.hxx:197
Represents a ROW record and additionally contains all cells records of a row.
Definition: xetable.hxx:822
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:777
XclAddress maXclPos
Definition: xetable.hxx:310
Contains all cell references that can be extracted from a multiple operations formula.
Definition: xlformula.hxx:469
XclExpRangeFmlaRef mxAddRec
The token array of the formula.
Definition: xetable.hxx:451
XclExpRecordList< XclExpHyperlink > XclExpHyperlinkList
Definition: xetable.hxx:993
XclTokenArrayRef mxTokArr
Definition: xetable.hxx:169
XclExpColinfo(const XclExpRoot &rRoot, SCCOL nScCol, SCROW nLastScRow, XclExpColOutlineBuffer &rOutlineBfr)
Constructs the record with the settings in the Calc document.
Definition: xetable.cxx:1608
XclExpShrfmlaBuffer(const XclExpRoot &rRoot)
Definition: xetable.cxx:209
bool mbAlwaysEmpty
Definition: xetable.hxx:894
virtual void RemoveUnusedBlankCells(const ScfUInt16Vec &rXFIndexes) override
Tries to remove unused Excel XF index(es).
Definition: xetable.cxx:1331
::std::vector< sal_uInt16 > ScfUInt16Vec
Definition: ftools.hxx:253
ScfInt32Vec maRkValues
Definition: xetable.hxx:560
virtual void Save(XclExpStream &rStrm) override
Writes all COLINFO records of this buffer.
Definition: xetable.cxx:1791
void Extend(const ScAddress &rScPos)
Extends the cell range to include the passed cell address.
Definition: xetable.cxx:99
void AppendCell(XclExpCellRef const &xCell, bool bIsMergedBase)
Appends the passed cell object to the row that the cell specifies.
Definition: xetable.cxx:2153
XclExpArrayRef CreateArray(const ScTokenArray &rScTokArr, const ScRange &rScRange)
Inserts a new ARRAY record into the buffer and returns it.
Definition: xetable.cxx:145
XclExpColOutlineBuffer(const XclExpRoot &rRoot)
Definition: xetable.hxx:604
sal_uInt32 GetXclRowRpt() const
Definition: xetable.hxx:875
unsigned char sal_uInt8
XclExpRowOutlineBuffer(const XclExpRoot &rRoot)
Definition: xetable.hxx:616
::std::map< ScAddress, XclExpArrayRef > XclExpArrayMap
Definition: xetable.hxx:138
sal_uInt32 mnXFId
Definition: xestyle.hxx:412
XclExpShrfmlaRef CreateOrExtendShrfmla(const ScFormulaCell &rScCell, const ScAddress &rScPos)
Tries to create a new or to update an existing SHRFMLA record.
Definition: xetable.cxx:253
XclRange maXclRange
Definition: xetable.hxx:90
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:2116
XclExpRangeFmlaBase(sal_uInt16 nRecId, sal_uInt32 nRecSize, const ScAddress &rScPos)
Constructs the record with a single cell.
Definition: xetable.cxx:70
XclExpDefaultRowData maDefData
Definition: xetable.hxx:808
std::size_t GetContSize() const
Definition: xetable.hxx:341
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:1685
Caches all SHRFMLA records and provides functions to update their ranges.
Definition: xetable.hxx:176
Represents a NUMBER record that describes a cell with a double value.
Definition: xetable.hxx:358
void Update(SCCOL nScCol)
Updates the current state by processing the settings of the passed Calc column.
Definition: xetable.hxx:608
A combination of unique XF identifier with real Excel XF index.
Definition: xestyle.hxx:410
rtl::Reference< XclExpTableop > XclExpTableopRef
Definition: xetable.hxx:244
virtual void Save(XclExpStream &rStrm) override
Saves the entire cell table.
Definition: xetable.cxx:2715
Represents a MERGEDCELLS record containing all merged cell ranges in a sheet.
Definition: xecontent.hxx:74
virtual sal_uInt32 GetFirstXFId() const =0
Derived classes return the XF identifier of the first contained cell.
virtual void WriteContents(XclExpStream &rStrm, sal_uInt16 nRelCol)=0
Derived classes write the remaining contents of the specified cell (without XF index).
virtual void WriteBody(XclExpStream &rStrm) override
Writes the body of the record (without record header).
Definition: xetable.cxx:203
void InsertCell(XclExpCellRef xCell, size_t nPos, bool bIsMergedBase)
Inserts a cell at the specified list position, tries to merge with neighbors.
Definition: xetable.cxx:2081
Contains all created TABLEOP records and supports creating or updating them.
Definition: xetable.hxx:247
sal_uInt16 mnXFIndex
Temporary XF identifier.
Definition: xestyle.hxx:413
void SetXclCol(sal_uInt16 nXclCol)
Sets this record to a new column position.
Definition: xetable.hxx:307
o3tl::sorted_vector< const ScTokenArray * > BadTokenArraysType
Definition: xetable.hxx:198
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:1183
XclExpRecordList< XclExpCellBase > maCellList
Definition: xetable.hxx:886
virtual bool IsVolatile() const override
Returns true, if the multiple operations range is volatile.
Definition: xetable.cxx:411
bool mbHidden
The end position of a group in a level.
Definition: xetable.hxx:589
virtual XclTokenArrayRef CreateCellTokenArray(const XclExpRoot &rRoot) const =0
Derived classes create the token array for a corresponding FORMULA cell record.
XclExpXFId maXFId
Definition: xetable.hxx:732
virtual void WriteXmlContents(XclExpXmlStream &rStrm, const XclAddress &rAddress, sal_uInt32 nXFId, sal_uInt16 nRelCol) override
Definition: xetable.cxx:1369
bool mbValid
Type of the multiple operation (Calc constant).
Definition: xetable.hxx:241
sal_uInt16 mnRowLevels
Width of column outline area (pixels).
Definition: xetable.hxx:636
bool IsHidden() const
Returns true, if rows are hidden by default.
Definition: xetable.hxx:789
void SetXFId(sal_uInt32 nXFId)
Definition: xetable.hxx:343
rtl::Reference< XclExtLst > XclExtLstRef
Definition: xetable.hxx:1000
const sal_uInt16 EXC_ROW_UNSYNCED
Definition: xltable.hxx:85
virtual void WriteContents(XclExpStream &rStrm) override
Derived classes write the contents of the specified cell (without XF index).
Definition: xetable.cxx:683
sal_uInt8 mnHighestOutlineLevel
DIMENSIONS record for used area.
Definition: xetable.hxx:940
XclTokenArrayRef mxTokArr
The Calc formula cell.
Definition: xetable.hxx:450
virtual void SaveXml(XclExpXmlStream &rStrm) override
Definition: xetable.cxx:933
Represents a DIMENSIONS record containing the used area of a sheet.
Definition: xetable.hxx:641
XclExpRowBuffer maRowBfr
Buffer for column formatting.
Definition: xetable.hxx:1003
std::shared_ptr< XclExpString > XclExpStringRef
Definition: xeroot.hxx:36
XclExpColinfoList maColInfos
Definition: xetable.hxx:771
sal_uInt16 mnFlags
Definition: xetable.hxx:782
::std::vector< sal_Int32 > ScfInt32Vec
Definition: ftools.hxx:254
void Finalize(const ScfUInt16Vec &rColXFIndexes, bool bUpdateProgress)
Converts all XF identifiers into the Excel XF indexes.
Definition: xetable.cxx:1891
bool IsHidden() const
Returns true, if this row is hidden.
Definition: xetable.hxx:838
XclExpRecordRef mxGuts
DEFROWHEIGHT record for default row format.
Definition: xetable.hxx:1008
virtual void Save(XclExpStream &rStrm) override
Writes the record, calls WriteContents() for each contained cell.
Definition: xetable.cxx:1126
virtual void WriteBody(XclExpStream &rStrm) override
Writes the contents of the TABLEOP record.
Definition: xetable.cxx:429
BadTokenArraysType maBadTokens
Map containing the SHRFMLA records.
Definition: xetable.hxx:201
bool IsEmpty() const
Definition: xerecord.hxx:327
sal_uInt16 mnScWidth
Excel width of the column.
Definition: xetable.hxx:735
sal_uInt16 mnLastAppXclCol
Definition: xetable.hxx:235
void SvStream & rStrm
sal_uInt8 GetLevel() const
Returns the highest level of an open group at the last processed position.
Definition: xetable.hxx:574
virtual void ConvertXFIndexes(const XclExpRoot &rRoot)=0
Derived classes convert the XF identifier(s) into the Excel XF index(es).
virtual void WriteContents(XclExpStream &rStrm) override
Derived classes write the contents of the specified cell (without XF index).
Definition: xetable.cxx:654
XclExpTableopBuffer maTableopBfr
Buffer for SHRFMLA records.
Definition: xetable.hxx:1006
rtl::Reference< XclExpArray > XclExpArrayRef
Definition: xetable.hxx:124
Represents a text cell record.
Definition: xetable.hxx:398
sal_uInt16 mnFirstXclCol
Outline Level of column (for OOXML)
Definition: xetable.hxx:738
sal_uInt8 GetHighestOutlineLevel() const
Definition: xetable.hxx:925
void SetXclRowRpt(sal_uInt32 nRpt)
Definition: xetable.hxx:876
XclExpArrayMap maRecMap
Definition: xetable.hxx:139
virtual void Save(XclExpStream &rStrm) override
Writes the DIMENSIONS record, all ROW records and all cell records.
Definition: xetable.cxx:2332
virtual sal_uInt16 GetLastXclCol() const override
Returns the last column, which is equal to the first column for single cells.
Definition: xetable.cxx:584
bool IsUnsynced() const
Returns true, if this row contains a manually set height.
Definition: xetable.hxx:840
RowMap maRowMap
Definition: xetable.hxx:937
XclExpRecordList< XclExpNote > XclExpNoteList
Definition: xetable.hxx:992
A 2D cell range address struct with Excel column and row indexes.
Definition: xladdress.hxx:58
sal_uInt32 mnFirstUsedXclRow
Definition: xetable.hxx:658
XclExpXFId maXFId
Definition: xetable.hxx:353
XclExpRkCell(const XclExpRoot &rRoot, const XclAddress &rXclPos, const ScPatternAttr *pPattern, sal_uInt32 nForcedXFId, sal_Int32 nRkValue)
Definition: xetable.cxx:1348
virtual void Save(XclExpStream &rStrm) override
Writes the record if it is valid.
Definition: xetable.cxx:416
Base class for single records with any content.
Definition: xerecord.hxx:143
XclExpMergedcellsRef mxMergedcells
List of NOTE records.
Definition: xetable.hxx:1010
rtl::Reference< XclExpShrfmla > XclExpShrfmlaRef
Definition: xetable.hxx:173
XclExpLevelInfo()
true = Group in this level is hidden.
Definition: xetable.hxx:590
virtual void Save(XclExpStream &rStrm) override
Writes the ROW record if the row is not disabled (see DisableIfDefault() function).
Definition: xetable.cxx:2071
XclExpDvalRef mxDval
List of HLINK records.
Definition: xetable.hxx:1012