Index: source/filter/inc/excimp8.hxx =================================================================== RCS file: /cvs/sc/sc/source/filter/inc/excimp8.hxx,v retrieving revision 1.42.2.2 diff -u -r1.42.2.2 excimp8.hxx --- source/filter/inc/excimp8.hxx 14 Feb 2003 15:00:11 -0000 1.42.2.2 +++ source/filter/inc/excimp8.hxx 25 Feb 2003 17:46:19 -0000 @@ -259,6 +259,7 @@ void CreateFromDouble( String& rStr, double fVal ); void SetCellAttribs(); void InsertQueryParam(); + void AmendAFName(const BOOL bUseUnNamed); protected: public: @@ -280,8 +281,8 @@ void SetAdvancedRange( const ScRange* pRange ); void SetExtractPos( const ScAddress& rAddr ); inline void SetAutoOrAdvanced() { bAutoOrAdvanced = TRUE; } - void Apply(); - void CreateScDBData(); + void Apply( const BOOL bUseUnNamed = FALSE ); + void CreateScDBData( const BOOL bUseUnNamed ); void EnableRemoveFilter(); }; @@ -289,14 +290,17 @@ class XclImpAutoFilterBuffer : private List { private: - inline XclImpAutoFilterData* _First() { return (XclImpAutoFilterData*) List::First(); } + UINT16 nAFActiveCount; + + inline XclImpAutoFilterData* _First() { return (XclImpAutoFilterData*) List::First(); } inline XclImpAutoFilterData* _Next() { return (XclImpAutoFilterData*) List::Next(); } inline void Append( XclImpAutoFilterData* pData ) { List::Insert( pData, LIST_APPEND ); } protected: public: - virtual ~XclImpAutoFilterBuffer(); + XclImpAutoFilterBuffer(); + virtual ~XclImpAutoFilterBuffer(); void Insert( RootData* pRoot, const ScRange& rRange, const String& rName ); @@ -306,6 +310,8 @@ XclImpAutoFilterData* GetByTab( UINT16 nTab ); BOOL HasDropDown( UINT16 nCol, UINT16 nRow, UINT16 nTab ); + inline void IncrementActiveAF() { nAFActiveCount++; } + inline BOOL UseUnNamed() { return nAFActiveCount == 1; } }; Index: source/filter/excel/excimp8.cxx =================================================================== RCS file: /cvs/sc/sc/source/filter/excel/excimp8.cxx,v retrieving revision 1.74.4.1.2.4.2.2 diff -u -r1.74.4.1.2.4.2.2 excimp8.cxx --- source/filter/excel/excimp8.cxx 25 Feb 2003 16:38:34 -0000 1.74.4.1.2.4.2.2 +++ source/filter/excel/excimp8.cxx 25 Feb 2003 17:47:27 -0000 @@ -1285,6 +1285,8 @@ // then the latter is true.. if( !pAutoFilterBuffer ) return; + pAutoFilterBuffer->IncrementActiveAF(); + XclImpAutoFilterData* pData = pAutoFilterBuffer->GetByTab( GetScTab() ); if( pData ) pData->SetAutoOrAdvanced(); @@ -1535,9 +1537,9 @@ } -void XclImpAutoFilterData::Apply() +void XclImpAutoFilterData::Apply( const BOOL bUseUnNamed ) { - CreateScDBData(); + CreateScDBData(bUseUnNamed); if( bActive ) { @@ -1554,7 +1556,7 @@ } } -void XclImpAutoFilterData::CreateScDBData() +void XclImpAutoFilterData::CreateScDBData( const BOOL bUseUnNamed ) { // Create the ScDBData() object if the AutoFilter is activated @@ -1565,6 +1567,8 @@ pCurrDBData = rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() ); if( !pCurrDBData ) { + AmendAFName(bUseUnNamed); + pCurrDBData = new ScDBData( aFilterName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() ); if( pCurrDBData ) @@ -1600,6 +1604,21 @@ // inside the advanced range } +void XclImpAutoFilterData::AmendAFName(const BOOL bUseUnNamed) +{ + // If-and-only-if we have one AF filter then + // use the Calc "unnamed" range name. Calc + // only supports one in total while Excel + // supports one per sheet. + if( bUseUnNamed && bAutoOrAdvanced ) + aFilterName = ScGlobal::GetRscString(STR_DB_NONAME); +} + +XclImpAutoFilterBuffer::XclImpAutoFilterBuffer() : + nAFActiveCount( 0 ) +{ +} + XclImpAutoFilterBuffer::~XclImpAutoFilterBuffer() { for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() ) @@ -1630,7 +1649,7 @@ void XclImpAutoFilterBuffer::Apply() { for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() ) - pData->Apply(); + pData->Apply(UseUnNamed()); } XclImpAutoFilterData* XclImpAutoFilterBuffer::GetByTab( UINT16 nTab ) Index: source/filter/excel/excrecds.cxx =================================================================== RCS file: /cvs/sc/sc/source/filter/excel/excrecds.cxx,v retrieving revision 1.54.4.2.2.2.18.2 diff -u -r1.54.4.2.2.2.18.2 excrecds.cxx --- source/filter/excel/excrecds.cxx 21 Feb 2003 15:31:53 -0000 1.54.4.2.2.2.18.2 +++ source/filter/excel/excrecds.cxx 25 Feb 2003 17:47:39 -0000 @@ -100,6 +100,7 @@ #include #include "global.hxx" +#include "globstr.hrc" #include "docpool.hxx" #include "patattr.hxx" #include "cell.hxx" @@ -1769,7 +1770,8 @@ BOOL ExcName::IsBuiltInAFName( const String& rName, UINT8 nKey ) { - if( XclTools::IsBuiltInName( nTabNum, rName, nKey ) ) + if( XclTools::IsBuiltInName( nTabNum, rName, nKey ) || + (rName == ScGlobal::GetRscString( STR_DB_NONAME ))) { bDummy = TRUE; return TRUE;