[xlsb] add PIVOTCACHEDEF (fill inside objects)

This commit is contained in:
Vladimir Gorshenkov
2022-01-30 23:11:32 +03:00
parent d2e0712a92
commit 855fb66aef
8 changed files with 1026 additions and 111 deletions

View File

@ -44,7 +44,26 @@ void Xnum::load(CFRecord& record)
{
record.loadAnyData(data);
}
std::wstring Xnum::DateTimeValue()
{
unsigned short yr = data.bytes.type;
unsigned short mon = data.bytes.fExprO;
unsigned char dom = data.bytes.Byte1;
unsigned char hr = data.bytes.Byte2;
unsigned char min = data.bytes.Byte3;
unsigned char sec = data.bytes.Byte4;
if (mon < 1 || mon > 12) mon = 1;
if (dom < 1 || dom > 31) dom = 1;
if (yr < 1) yr = 1; //???
std::wstringstream s;
s << yr << L"-" << (mon < 10 ? L"0" : L"") << mon << L"-" << (dom < 10 ? L"0" : L"") << dom << L"T"
<< (hr < 10 ? L"0" : L"") << hr << L":" << (min < 10 ? L"0" : L"") << min << L":" << (sec < 10 ? L"0" : L"") << sec;
return s.str();
}
} // namespace XLS

View File

@ -60,6 +60,8 @@ public:
}bytes;
double value;
} data;
std::wstring DateTimeValue();
};
typedef Xnum DateAsNum;

View File

@ -909,6 +909,7 @@ enum ElementType
typeBeginISXVDCols,
typeSXLIRWS,
typeSXLICOLS,
typePCDIDT,
};

View File

@ -66,6 +66,8 @@ namespace XLSB
record >> ifmt >> wTypeSql >> ihdb >> isxtl >> cIsxtmps;
record >> stFldName;
if(fCaption)
record >> stFldCaption;

View File

@ -66,6 +66,7 @@ namespace XLSB
_UINT32 ihdb;
_UINT32 isxtl;
_UINT32 cIsxtmps;
XLWideString stFldName;
XLWideString stFldCaption;
XLS::PivotParsedFormula fldFmla;
_UINT32 cbRgisxtmp;

View File

@ -47,6 +47,8 @@ namespace XLSB
virtual const bool loadContent(XLS::BinProcessor& proc);
static const XLS::ElementType type = XLS::typePCDIDT;
XLS::BaseObjectPtr m_source;
};

View File

@ -41,7 +41,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CSharedItems)
WritingElement_XlsbConstructors(CSharedItems)
CSharedItems(){}
virtual ~CSharedItems() {}
@ -54,10 +54,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_SharedItems;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
nullable_bool m_oContainsBlank;
@ -80,7 +82,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(COLAPGroupItems)
WritingElement_XlsbConstructors(COLAPGroupItems)
COLAPGroupItems(){}
virtual ~COLAPGroupItems() {}
@ -93,6 +95,7 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_OLAPGroupItems;
@ -105,7 +108,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CDiscreteGroupingProperties)
WritingElement_XlsbConstructors(CDiscreteGroupingProperties)
CDiscreteGroupingProperties(){}
virtual ~CDiscreteGroupingProperties() {}
@ -114,10 +117,11 @@ namespace OOX
}
virtual std::wstring toXML() const
{
return L"";
return L"";
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_DiscreteGroupingProperties;
@ -130,7 +134,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CRangeGroupingProperties)
WritingElement_XlsbConstructors(CRangeGroupingProperties)
CRangeGroupingProperties(){}
virtual ~CRangeGroupingProperties() {}
@ -143,10 +147,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_RangeGroupingProperties;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
nullable<SimpleTypes::Spreadsheet::CValuesGroupBy<>> m_oGroupBy;
@ -166,7 +172,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CFieldGroupProperties)
WritingElement_XlsbConstructors(CFieldGroupProperties)
CFieldGroupProperties(){}
virtual ~CFieldGroupProperties() {}
@ -179,10 +185,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_FieldGroupProperties;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
nullable<SimpleTypes::CUnsignedDecimalNumber<>> m_oBase;
@ -194,9 +202,9 @@ namespace OOX
};
class CPivotCacheField : public WritingElement
{
public:
public:
WritingElement_AdditionConstructors(CPivotCacheField)
WritingElement_XlsbConstructors(CPivotCacheField)
CPivotCacheField(){}
virtual ~CPivotCacheField() {}
@ -209,10 +217,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_PivotCacheField;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
nullable_string m_oName;
@ -239,7 +249,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CPivotCacheFields)
WritingElement_XlsbConstructors(CPivotCacheFields)
CPivotCacheFields(){}
virtual ~CPivotCacheFields() {}
@ -252,6 +262,7 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_PivotCacheFields;
@ -264,7 +275,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CRangeSet)
WritingElement_XlsbConstructors(CRangeSet)
CRangeSet(){}
virtual ~CRangeSet() {}
@ -277,10 +288,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_RangeSet;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
nullable_string m_oSheet;
@ -296,7 +309,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CRangeSets)
WritingElement_XlsbConstructors(CRangeSets)
CRangeSets(){}
virtual ~CRangeSets() {}
@ -309,6 +322,7 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_RangeSets;
@ -321,7 +335,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CPageItem)
WritingElement_XlsbConstructors(CPageItem)
CPageItem(){}
virtual ~CPageItem() {}
@ -334,10 +348,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_PageItem;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
nullable_string m_oName;
@ -346,7 +362,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CPageItems)
WritingElement_XlsbConstructors(CPageItems)
CPageItems(){}
virtual ~CPageItems() {}
@ -359,6 +375,7 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_PageItems;
@ -371,7 +388,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CPageItemValues)
WritingElement_XlsbConstructors(CPageItemValues)
CPageItemValues(){}
virtual ~CPageItemValues() {}
@ -384,10 +401,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_PageItemValues;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
nullable<SimpleTypes::CUnsignedDecimalNumber<>> m_oCount;
@ -397,6 +416,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CConsolidationSource)
WritingElement_XlsbConstructors(CConsolidationSource)
CConsolidationSource()
{
}
@ -413,10 +433,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_ConsolidationSource;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
//----------
nullable_bool m_oAutoPage;
@ -428,7 +450,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CWorksheetSource)
WritingElement_XlsbConstructors(CWorksheetSource)
CWorksheetSource(){}
virtual ~CWorksheetSource() {}
@ -441,10 +463,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_WorksheetSource;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
nullable_string m_oSheet;
@ -456,6 +480,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CPivotCacheSource)
WritingElement_XlsbConstructors(CPivotCacheSource)
CPivotCacheSource()
{
}
@ -472,10 +497,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_PivotCacheSource;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
//----------
nullable<SimpleTypes::CUnsignedDecimalNumber<>> m_oConnectionId;
@ -489,6 +516,7 @@ namespace OOX
{
public:
WritingElement_AdditionConstructors(CPivotCacheDefinition)
WritingElement_XlsbConstructors(CPivotCacheDefinition)
CPivotCacheDefinition()
{
}
@ -505,10 +533,12 @@ namespace OOX
}
virtual void toXML(NSStringUtils::CStringBuilder& writer) const;
virtual void fromXML(XmlUtils::CXmlLiteReader& oReader);
void fromBin(XLS::BaseObjectPtr& obj);
virtual EElementType getType () const
{
return et_x_PivotCacheDefinition;
}
void ReadAttributes(XLS::BaseObjectPtr& obj);
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
//----------
nullable_bool m_oBackgroundQuery;

File diff suppressed because it is too large Load Diff