24 #include <document.hxx>
29 #include <unonames.hxx>
40 #include <com/sun/star/sheet/DataImportMode.hpp>
41 #include <com/sun/star/table/TableOrientation.hpp>
42 #include <osl/diagnose.h>
63 const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
87 nSourceType(
sheet::DataImportMode_NONE),
89 nSubTotalsUserListIndex(0),
92 bContainsSubTotal(false),
99 bSubTotalsBindFormatsToContent(false),
100 bSubTotalsIsCaseSensitive(false),
101 bSubTotalsInsertPageBreaks(false),
102 bSubTotalsSortGroups(false),
103 bSubTotalsEnabledUserList(false),
104 bSubTotalsAscending(true),
105 bFilterConditionSourceRange(false),
112 for(
auto &aIter : *rAttrList )
114 switch( aIter.getToken() )
162 sal_Int32 nOffset = 0;
172 nRefresh = std::max( static_cast<sal_Int32>(fTime * 86400.0), sal_Int32(0) );
196 sal_Int32 nElement,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
249 ::std::unique_ptr<ScDBData>
pData(
271 case sheet::DataImportMode_NONE:
274 case sheet::DataImportMode_SQL:
278 case sheet::DataImportMode_TABLE:
283 case sheet::DataImportMode_QUERY:
289 OSL_FAIL(
"Unknown data import mode");
292 pData->SetImportParam(aParam);
299 beans::PropertyValue aProperty;
301 table::TableOrientation eOrient =
mpQueryParam->bByRow ?
302 table::TableOrientation_ROWS : table::TableOrientation_COLUMNS;
303 aProperty.Value <<= eOrient;
316 pData->SetSortParam(aParam);
335 const uno::Sequence<sheet::SubTotalColumn>& rColumns = rSubTotalRule.aSubTotalColumns;
336 sal_Int32 nColCount = rColumns.getLength();
337 sal_Int16 nGroupColumn = rSubTotalRule.nSubTotalRuleGroupFieldNumber;
339 aParam.
nField[nPos] =
static_cast<SCCOL>(nGroupColumn);
348 const sheet::SubTotalColumn* pAry = rColumns.getConstArray();
363 pData->SetSubTotalParam(aParam);
366 if (pData->HasImportParam() && !pData->HasImportSelection())
407 pData->GetArea(aRange);
409 setAutoFilterFlags(*pDoc, *pData);
421 pData->GetArea(aRange);
423 if (setAutoFilterFlags(*pDoc, *pData))
436 setAutoFilterFlags(*pDoc, *pData);
446 pDatabaseRangeContext(pTempDatabaseRangeContext)
448 if ( rAttrList.is() )
450 for (
auto &aIter : *rAttrList)
452 switch (aIter.getToken())
474 sal_Int32 nElement,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
498 pDatabaseRangeContext(pTempDatabaseRangeContext)
500 if ( rAttrList.is() )
502 for (
auto &aIter : *rAttrList)
504 switch (aIter.getToken())
524 sal_Int32 nElement,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
548 pDatabaseRangeContext(pTempDatabaseRangeContext)
550 if ( rAttrList.is() )
552 for (
auto &aIter : *rAttrList)
554 switch (aIter.getToken())
573 sal_Int32 nElement,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
599 if ( rAttrList.is() )
602 if (aIter != rAttrList->end())
603 sConRes = aIter.toString();
605 if (!sConRes.isEmpty())
617 pDatabaseRangeContext(pTempDatabaseRangeContext)
619 if ( !rAttrList.is() )
622 for (
auto &aIter : *rAttrList)
624 switch (aIter.getToken())
644 sal_Int32 nElement,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
673 if ( !rAttrList.is() )
676 for (
auto &aIter : *rAttrList)
678 switch (aIter.getToken())
682 const OUString &sValue = aIter.toString();
683 if (sValue.getLength() > 8)
685 OUString sTemp = sValue.copy(0, 8);
686 if (sTemp ==
"UserList")
689 sTemp = sValue.copy(8);
730 pDatabaseRangeContext(pTempDatabaseRangeContext)
732 if ( rAttrList.is() )
734 for (
auto &aIter : *rAttrList)
736 switch (aIter.getToken())
751 sal_Int32 nElement,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
779 pSubTotalRuleContext(pTempSubTotalRuleContext)
781 if ( !rAttrList.is() )
784 for (
auto &aIter : *rAttrList)
786 switch (aIter.getToken())
804 sheet::SubTotalColumn aSubTotalColumn;
void SetSubTotalsAscending(const bool bTemp)
::std::vector< ScSortKeyState > maKeyState
bool bGroupActive[MAXSUBTOTAL]
active groups
ScXMLSubTotalRuleContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList, ScXMLDatabaseRangeContext *pTempDatabaseRangeContext)
const Link< Timer *, void > & GetRefreshHandler() const
bool insert(std::unique_ptr< ScDBData > p)
Takes ownership of p and attempts to insert it into the collection.
bool HasAutoFilter() const
ScXMLDatabaseRangeContext * pDatabaseRangeContext
SC_DLLPUBLIC ScDBCollection * GetDBCollection() const
SCCOL nField[MAXSUBTOTAL]
associated field
bool bUserDef
sort user defined
virtual ~ScXMLDatabaseRangeContext() override
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList) override
std::unique_ptr< ScDBData > ConvertToDBData(const OUString &rName)
std::unique_ptr< ScRefreshTimerControl > const & GetRefreshTimerControlAddress() const
ScXMLDatabaseRangeContext * pDatabaseRangeContext
ScXMLSourceQueryContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList, ScXMLDatabaseRangeContext *pTempDatabaseRangeContext)
std::unique_ptr< ContentProperties > pData
void AddSubTotalColumn(const css::sheet::SubTotalColumn &rSubTotalColumn)
SC_DLLPUBLIC void SetAnonymousDBData(SCTAB nTab, std::unique_ptr< ScDBData > pDBData)
virtual ~ScXMLSourceSQLContext() override
ScDocument * GetDocument()
#define STR_DB_LOCAL_NONAME
SC_DLLPUBLIC bool ApplyFlagsTab(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow, SCTAB nTab, ScMF nFlags)
bool bSubTotalsInsertPageBreaks
std::unique_ptr< ScQueryParam > mpQueryParam
bool bSubTotalsEnabledUserList
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override
XML_DATABASE_SOURCE_QUERY
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override
void SetSubTotalsBindFormatsToContent(const bool bTemp)
bool IsXMLToken(std::u16string_view rString, enum XMLTokenEnum eToken)
FastAttributeList & castToFastAttributeList(const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList)
XML_DISPLAY_FILTER_BUTTONS
XML_BIND_STYLES_TO_CONTENT
bool bPagebreak
page break at change of group
void SetSubTotalsSortGroups(const bool bTemp)
ScXMLSubTotalFieldContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList, ScXMLSubTotalRuleContext *pSubTotalRuleContext)
XML_ON_UPDATE_KEEP_STYLES
virtual ~ScXMLSubTotalFieldContext() override
void SetSubTotalsInsertPageBreaks(const bool bTemp)
exports com.sun.star. sheet
sal_uInt16 nUserIndex
index into list
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList) override
sal_Int32 SCCOLROW
a type capable of holding either SCCOL or SCROW
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
ScSubTotalRule aSubTotalRule
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override
ScXMLDatabaseRangeContext * pDatabaseRangeContext
css::sheet::DataImportMode nSourceType
ScXMLSortGroupsContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList, ScXMLDatabaseRangeContext *pTempDatabaseRangeContext)
ScRange aFilterConditionSourceRangeAddress
void SetSubTotalsIsCaseSensitive(const bool bTemp)
static bool GetRangeFromString(ScRange &rRange, const OUString &rRangeStr, const ScDocument &rDocument, formula::FormulaGrammar::AddressConvention eConv, sal_Int32 &nOffset, sal_Unicode cSeparator= ' ', sal_Unicode cQuote= '\'')
ScXMLSubTotalRulesContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList, ScXMLDatabaseRangeContext *pTempDatabaseRangeContext)
ScXMLDatabaseRangeContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList)
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override
SCCOL * pSubTotals[MAXSUBTOTAL]
array of columns to be calculated
This class exists only to provide GetScImport() to its derived classes.
virtual ~ScXMLSourceQueryContext() override
ScSubTotalFunc * pFunctions[MAXSUBTOTAL]
array of associated functions
SCCOL nSubTotals[MAXSUBTOTAL]
number of SubTotals
ScXMLConResContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList, ScXMLDatabaseRangeContext *pTempDatabaseRangeContext)
css::uno::Sequence< css::beans::PropertyValue > aSortSequence
void SetSourceObject(const OUString &sTempSourceObject)
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override
virtual ~ScXMLDatabaseRangesContext() override
static void convertDuration(OUStringBuffer &rBuffer, const double fTime)
virtual void SAL_CALL endFastElement(sal_Int32 nElement) override
ScXMLImport & GetScImport()
ScXMLDatabaseRangeContext * pDatabaseRangeContext
ScXMLDatabaseRangeContext * pDatabaseRangeContext
void GetArea(SCTAB &rTab, SCCOL &rCol1, SCROW &rRow1, SCCOL &rCol2, SCROW &rRow2) const
static void FillSortParam(ScSortParam &rParam, const css::uno::Sequence< css::beans::PropertyValue > &rSeq)
OUString sDatabaseRangeName
bool bSubTotalsIsCaseSensitive
ScXMLSubTotalRuleContext * pSubTotalRuleContext
static css::sheet::GeneralFunction GetFunctionFromString(std::u16string_view rString)
ScXMLSourceTableContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList, ScXMLDatabaseRangeContext *pTempDatabaseRangeContext)
virtual ~ScXMLSortGroupsContext() override
void SetDatabaseName(const OUString &sTempDatabaseName)
#define SC_UNONAME_ORIENT
XML_GROUP_BY_FIELD_NUMBER
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList) override
virtual ~ScXMLSubTotalRulesContext() override
bool bSubTotalsSortGroups
virtual ~ScXMLSubTotalRuleContext() override
sal_Int16 nSubTotalRuleGroupFieldNumber
#define STR_DB_GLOBAL_NONAME
sal_uInt16 GetSortKeyCount() const
void SetConnectionResource(const OUString &sTempConRes)
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList) override
bool bIncludePattern
sort formats
#define XML_ELEMENT(prefix, name)
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList) override
virtual ~ScXMLConResContext() override
bool bSubTotalsBindFormatsToContent
std::vector< ScSubTotalRule > aSubTotalRules
void AddSubTotalRule(const ScSubTotalRule &rRule)
ScDBCollection::RangeType meRangeType
void SetSubTotalsEnabledUserList(const bool bTemp)
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList) override
ScXMLDatabaseRangesContext(ScXMLImport &rImport)
virtual ~ScXMLSourceTableContext() override
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList > &xAttrList) override
sal_Int16 nSubTotalsUserListIndex
bool bFilterConditionSourceRange
void SetNative(const bool bTempNative)
OUString sConnectionResource
ScXMLSourceSQLContext(ScXMLImport &rImport, const rtl::Reference< sax_fastparser::FastAttributeList > &rAttrList, ScXMLDatabaseRangeContext *pTempDatabaseRangeContext)
XML_DATABASE_SOURCE_TABLE
bool bAscending
sort ascending
void SetSubTotalsUserListIndex(const sal_Int16 nTemp)
XML_PAGE_BREAKS_ON_GROUP_CHANGE
static SC_DLLPUBLIC ScSubTotalFunc toSubTotalFunc(ScGeneralFunction eGenFunc)
void SetSourceType(const css::sheet::DataImportMode nTempSourceType)