[Libreoffice-commits] core.git: 2 commits - sc/source
Eike Rathke
erack at redhat.com
Wed Nov 11 08:01:52 PST 2015
sc/source/filter/excel/excrecds.cxx | 13 +++++++------
sc/source/filter/excel/xedbdata.cxx | 6 +++---
sc/source/filter/inc/excrecds.hxx | 7 ++++++-
3 files changed, 16 insertions(+), 10 deletions(-)
New commits:
commit 11fc639c0897a192f1da0c69d1f7ab683ff1208e
Author: Eike Rathke <erack at redhat.com>
Date: Wed Nov 11 16:58:53 2015 +0100
TableRef: write <table><autoFilter> content to OOXML
Change-Id: Iedd15feb7aaceebaa522b276cfa079afa1193bc1
diff --git a/sc/source/filter/excel/xedbdata.cxx b/sc/source/filter/excel/xedbdata.cxx
index 640e306..6613c37 100644
--- a/sc/source/filter/excel/xedbdata.cxx
+++ b/sc/source/filter/excel/xedbdata.cxx
@@ -8,6 +8,7 @@
*/
#include "xedbdata.hxx"
+#include "excrecds.hxx"
#include "xltools.hxx"
#include "dbdata.hxx"
#include "document.hxx"
@@ -219,9 +220,8 @@ void XclExpTables::SaveTableXml( XclExpXmlStream& rStrm, const Entry& rEntry )
* When not applied but buttons hidden, Excel writes, for example,
* <filterColumn colId="0" hiddenButton="1"/> */
- pTableStrm->singleElement( XML_autoFilter,
- XML_ref, XclXmlUtils::ToOString(aRange),
- FSEND);
+ ExcAutoFilterRecs aAutoFilter( rStrm.GetRoot(), aRange.aStart.Tab(), &rData);
+ aAutoFilter.SaveXml( rStrm);
}
const std::vector< OUString >& rColNames = rData.GetTableColumnNames();
commit 52e08f200e5ed525cb1ff92a13ab85d36cd7459f
Author: Eike Rathke <erack at redhat.com>
Date: Wed Nov 11 14:48:02 2015 +0100
TableRef: prepare ExcAutoFilterRecs to use a defined database range
Change-Id: Ic6bba6847a4877be70e157a217160caf1166fc25
diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx
index fc29675..a1e3acd 100644
--- a/sc/source/filter/excel/excrecds.cxx
+++ b/sc/source/filter/excel/excrecds.cxx
@@ -875,7 +875,7 @@ void XclExpAutofilter::SaveXml( XclExpXmlStream& rStrm )
rWorksheet->endElement( XML_filterColumn );
}
-ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab ) :
+ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab, const ScDBData* pDefinedData ) :
XclExpRoot( rRoot ),
pFilterMode( nullptr ),
pFilterInfo( nullptr )
@@ -885,7 +885,7 @@ ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab ) :
bool bFound = false;
bool bAdvanced = false;
- ScDBData* pData = rRoot.GetDoc().GetAnonymousDBData(nTab);
+ const ScDBData* pData = (pDefinedData ? pDefinedData : rRoot.GetDoc().GetAnonymousDBData(nTab));
ScRange aAdvRange;
if (pData)
{
@@ -904,13 +904,14 @@ ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab ) :
maRef = aRange;
// #i2394# built-in defined names must be sorted by containing sheet name
- rNameMgr.InsertBuiltInName( EXC_BUILTIN_FILTERDATABASE, aRange );
+ if (!pDefinedData)
+ rNameMgr.InsertBuiltInName( EXC_BUILTIN_FILTERDATABASE, aRange );
// advanced filter
if( bAdvanced )
{
// filter criteria, excel allows only same table
- if( aAdvRange.aStart.Tab() == nTab )
+ if( !pDefinedData && aAdvRange.aStart.Tab() == nTab )
rNameMgr.InsertBuiltInName( EXC_BUILTIN_CRITERIA, aAdvRange );
// filter destination range, excel allows only same table
@@ -918,7 +919,7 @@ ExcAutoFilterRecs::ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab ) :
{
ScRange aDestRange( aParam.nDestCol, aParam.nDestRow, aParam.nDestTab );
aDestRange.aEnd.IncCol( nColCnt - 1 );
- if( aDestRange.aStart.Tab() == nTab )
+ if( !pDefinedData && aDestRange.aStart.Tab() == nTab )
rNameMgr.InsertBuiltInName( EXC_BUILTIN_EXTRACT, aDestRange );
}
@@ -1052,7 +1053,7 @@ XclExpFilterManager::XclExpFilterManager( const XclExpRoot& rRoot ) :
void XclExpFilterManager::InitTabFilter( SCTAB nScTab )
{
- maFilterMap[ nScTab ].reset( new ExcAutoFilterRecs( GetRoot(), nScTab ) );
+ maFilterMap[ nScTab ].reset( new ExcAutoFilterRecs( GetRoot(), nScTab, nullptr ) );
}
XclExpRecordRef XclExpFilterManager::CreateRecord( SCTAB nScTab )
diff --git a/sc/source/filter/inc/excrecds.hxx b/sc/source/filter/inc/excrecds.hxx
index 47d4a4c..cf4b933 100644
--- a/sc/source/filter/inc/excrecds.hxx
+++ b/sc/source/filter/inc/excrecds.hxx
@@ -41,6 +41,7 @@
//------------------------------------------------------------------ Forwards -
+class ScDBData;
struct ScQueryEntry;
//----------------------------------------------------------- class ExcRecord -
@@ -401,7 +402,11 @@ public:
class ExcAutoFilterRecs : public XclExpRecordBase, protected XclExpRoot
{
public:
- explicit ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab );
+ /** @param pDefinedData
+ If nullptr, obtain anonymous ScDBData from sheet nTab.
+ Else, use defined database range; used with XclExpTables.
+ */
+ explicit ExcAutoFilterRecs( const XclExpRoot& rRoot, SCTAB nTab, const ScDBData* pDefinedData );
virtual ~ExcAutoFilterRecs();
void AddObjRecs();
More information about the Libreoffice-commits
mailing list