diff -cNr sc.orig/source/filter/xml/XMLExportDatabaseRanges.cxx sc/source/filter/xml/XMLExportDatabaseRanges.cxx *** sc.orig/source/filter/xml/XMLExportDatabaseRanges.cxx Tue Mar 11 14:09:38 2008 --- sc/source/filter/xml/XMLExportDatabaseRanges.cxx Thu Mar 13 11:01:18 2008 *************** *** 305,310 **** --- 305,368 ---- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("=")); } + rtl::OUString ScXMLExportDatabaseRanges::getOperatorXML(const long aFilterOperator, const sal_Bool bUseRegularExpressions) const + { + switch (aFilterOperator) + { + case sheet::FilterOperator2::EQUAL : + { + if (bUseRegularExpressions) + return GetXMLToken(XML_MATCH); + else + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("=")); + } + case sheet::FilterOperator2::NOT_EQUAL : + { + if (bUseRegularExpressions) + return GetXMLToken(XML_NOMATCH); + else + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("!=")); + } + case sheet::FilterOperator2::BOTTOM_PERCENT : + return GetXMLToken(XML_BOTTOM_PERCENT); + case sheet::FilterOperator2::BOTTOM_VALUES : + return GetXMLToken(XML_BOTTOM_VALUES); + case sheet::FilterOperator2::EMPTY : + return GetXMLToken(XML_EMPTY); + case sheet::FilterOperator2::GREATER : + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">")); + case sheet::FilterOperator2::GREATER_EQUAL : + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">=")); + case sheet::FilterOperator2::LESS : + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<")); + case sheet::FilterOperator2::LESS_EQUAL : + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<=")); + case sheet::FilterOperator2::NOT_EMPTY : + return GetXMLToken(XML_NOEMPTY); + case sheet::FilterOperator2::TOP_PERCENT : + return GetXMLToken(XML_TOP_PERCENT); + case sheet::FilterOperator2::TOP_VALUES : + return GetXMLToken(XML_TOP_VALUES); + case sheet::FilterOperator2::CONTAINS : + return GetXMLToken(XML_CONTAINS); + case sheet::FilterOperator2::DOES_NOT_CONTAIN : + return GetXMLToken(XML_DOES_NOT_CONTAIN); + case sheet::FilterOperator2::BEGINS_WITH : + return GetXMLToken(XML_BEGINS_WITH); + case sheet::FilterOperator2::DOES_NOT_BEGIN_WITH : + return GetXMLToken(XML_DOES_NOT_BEGIN_WITH); + case sheet::FilterOperator2::ENDS_WITH : + return GetXMLToken(XML_ENDS_WITH); + case sheet::FilterOperator2::DOES_NOT_END_WITH : + return GetXMLToken(XML_DOES_NOT_END_WITH); + default: + { + // added to avoid warnings + } + } + return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("=")); + } + void ScXMLExportDatabaseRanges::WriteCondition(const sheet::TableFilterField& aFilterField, sal_Bool bIsCaseSensitive, sal_Bool bUseRegularExpressions) { rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, rtl::OUString::valueOf(aFilterField.Field)); *************** *** 323,454 **** SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_CONDITION, sal_True, sal_True); } void ScXMLExportDatabaseRanges::WriteFilterDescriptor(const uno::Reference & xSheetFilterDescriptor, const rtl::OUString sDatabaseRangeName) { ! uno::Sequence aTableFilterFields(xSheetFilterDescriptor->getFilterFields()); ! sal_Int32 nTableFilterFields = aTableFilterFields.getLength(); ! if (nTableFilterFields > 0) ! { ! uno::Reference xPropertySet (xSheetFilterDescriptor, uno::UNO_QUERY); ! if (xPropertySet.is()) ! { ! if (::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_COPYOUT))))) { ! table::CellAddress aOutputPosition; ! if (xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_OUTPOS))) >>= aOutputPosition) ! { ! rtl::OUString sOUCellAddress; ! ScRangeStringConverter::GetStringFromAddress( sOUCellAddress, aOutputPosition, pDoc ); ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, sOUCellAddress); ! } ! } ! ScDBCollection* pDBCollection = pDoc->GetDBCollection(); ! sal_uInt16 nIndex; ! pDBCollection->SearchName(sDatabaseRangeName, nIndex); ! ScDBData* pDBData = (*pDBCollection)[nIndex]; ! ScRange aAdvSource; ! if (pDBData->GetAdvancedQuerySource(aAdvSource)) ! { ! rtl::OUString sOUCellAddress; ! ScRangeStringConverter::GetStringFromRange( sOUCellAddress, aAdvSource, pDoc ); ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, sOUCellAddress); ! } ! if (::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_SKIPDUP))))) ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY_DUPLICATES, XML_FALSE); ! SvXMLElementExport aElemF(rExport, XML_NAMESPACE_TABLE, XML_FILTER, sal_True, sal_True); ! rExport.CheckAttrList(); ! sal_Bool bIsCaseSensitive = ::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_ISCASE)))); ! sal_Bool bUseRegularExpressions = ::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_USEREGEX)))); ! sal_Bool bAnd = sal_False; ! sal_Bool bOr = sal_False; ! for (sal_Int32 i = 1; i < nTableFilterFields; ++i) ! { ! if (aTableFilterFields[i].Connection == sheet::FilterConnection_AND) ! bAnd = sal_True; ! else ! bOr = sal_True; ! } ! if (bOr && !bAnd) ! { ! SvXMLElementExport aElemOr(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, sal_True, sal_True); ! for (sal_Int32 i = 0; i < nTableFilterFields; ++i) ! { ! WriteCondition(aTableFilterFields[i], bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! else if (bAnd && !bOr) ! { ! SvXMLElementExport aElemAnd(rExport, XML_NAMESPACE_TABLE, XML_FILTER_AND, sal_True, sal_True); ! for (sal_Int32 i = 0; i < nTableFilterFields; ++i) ! { ! WriteCondition(aTableFilterFields[i], bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! else if (nTableFilterFields == 1) ! { ! WriteCondition(aTableFilterFields[0], bIsCaseSensitive, bUseRegularExpressions); ! } ! else ! { ! SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, sal_True, sal_True); ! sheet::TableFilterField aPrevFilterField = aTableFilterFields[0]; ! sheet::FilterConnection aConnection = aTableFilterFields[1].Connection; ! sal_Bool bOpenAndElement; ! rtl::OUString aName = rExport.GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, GetXMLToken(XML_FILTER_AND)); ! if (aConnection == sheet::FilterConnection_AND) ! { ! rExport.StartElement( aName, sal_True); ! bOpenAndElement = sal_True; ! } ! else ! bOpenAndElement = sal_False; for (sal_Int32 i = 1; i < nTableFilterFields; ++i) ! { ! if (aConnection != aTableFilterFields[i].Connection) ! { ! aConnection = aTableFilterFields[i].Connection; ! if (aTableFilterFields[i].Connection == sheet::FilterConnection_AND) ! { ! rExport.StartElement( aName, sal_True ); ! bOpenAndElement = sal_True; ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields[i]; ! if (i == nTableFilterFields - 1) ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! rExport.EndElement(aName, sal_True); ! bOpenAndElement = sal_False; ! } ! } ! else ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields[i]; ! if (bOpenAndElement) ! { ! rExport.EndElement(aName, sal_True); ! bOpenAndElement = sal_False; ! } ! if (i == nTableFilterFields - 1) ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! } ! else ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields[i]; ! if (i == nTableFilterFields - 1) ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! if(bOpenAndElement) ! rExport.EndElement(aName, sal_True); ! } ! } ! } } void ScXMLExportDatabaseRanges::WriteSortDescriptor(const uno::Sequence aSortProperties) --- 381,663 ---- SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_CONDITION, sal_True, sal_True); } + void ScXMLExportDatabaseRanges::WriteCondition(const sheet::TableFilterField2& aFilterField, sal_Bool bIsCaseSensitive, sal_Bool bUseRegularExpressions) + { + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_FIELD_NUMBER, rtl::OUString::valueOf(aFilterField.Field)); + if (bIsCaseSensitive) + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CASE_SENSITIVE, XML_TRUE); + if (aFilterField.IsNumeric) + { + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DATA_TYPE, XML_NUMBER); + rtl::OUStringBuffer sBuffer; + rExport.GetMM100UnitConverter().convertDouble(sBuffer, aFilterField.NumericValue); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, sBuffer.makeStringAndClear()); + } + else + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_VALUE, aFilterField.StringValue); + rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_OPERATOR, getOperatorXML(aFilterField.Operator, bUseRegularExpressions)); + SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_CONDITION, sal_True, sal_True); + } + void ScXMLExportDatabaseRanges::WriteFilterDescriptor(const uno::Reference & xSheetFilterDescriptor, const rtl::OUString sDatabaseRangeName) { ! uno::Reference< sheet::XSheetFilterDescriptor2 > xSheetFilterDescriptor2( xSheetFilterDescriptor, uno::UNO_QUERY ); ! if ( xSheetFilterDescriptor2.is() ) ! { ! uno::Sequence< sheet::TableFilterField2 > aTableFilterFields2( ! xSheetFilterDescriptor2->getFilterFields2() ); ! sal_Int32 nTableFilterFields = aTableFilterFields2.getLength(); ! if (nTableFilterFields > 0) ! { ! uno::Reference xPropertySet (xSheetFilterDescriptor, uno::UNO_QUERY); ! if (xPropertySet.is()) { ! if (::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_COPYOUT))))) ! { ! table::CellAddress aOutputPosition; ! if (xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_OUTPOS))) >>= aOutputPosition) ! { ! rtl::OUString sOUCellAddress; ! ScRangeStringConverter::GetStringFromAddress( sOUCellAddress, aOutputPosition, pDoc ); ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, sOUCellAddress); ! } ! } ! ScDBCollection* pDBCollection = pDoc->GetDBCollection(); ! sal_uInt16 nIndex; ! pDBCollection->SearchName(sDatabaseRangeName, nIndex); ! ScDBData* pDBData = (*pDBCollection)[nIndex]; ! ScRange aAdvSource; ! if (pDBData->GetAdvancedQuerySource(aAdvSource)) ! { ! rtl::OUString sOUCellAddress; ! ScRangeStringConverter::GetStringFromRange( sOUCellAddress, aAdvSource, pDoc ); ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, sOUCellAddress); ! } ! if (::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_SKIPDUP))))) ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY_DUPLICATES, XML_FALSE); ! SvXMLElementExport aElemF(rExport, XML_NAMESPACE_TABLE, XML_FILTER, sal_True, sal_True); ! rExport.CheckAttrList(); ! sal_Bool bIsCaseSensitive = ::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_ISCASE)))); ! sal_Bool bUseRegularExpressions = ::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_USEREGEX)))); ! sal_Bool bAnd = sal_False; ! sal_Bool bOr = sal_False; for (sal_Int32 i = 1; i < nTableFilterFields; ++i) ! { ! if (aTableFilterFields2[i].Connection == sheet::FilterConnection_AND) ! bAnd = sal_True; ! else ! bOr = sal_True; ! } ! if (bOr && !bAnd) ! { ! SvXMLElementExport aElemOr(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, sal_True, sal_True); ! for (sal_Int32 i = 0; i < nTableFilterFields; ++i) ! { ! WriteCondition(aTableFilterFields2[i], bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! else if (bAnd && !bOr) ! { ! SvXMLElementExport aElemAnd(rExport, XML_NAMESPACE_TABLE, XML_FILTER_AND, sal_True, sal_True); ! for (sal_Int32 i = 0; i < nTableFilterFields; ++i) ! { ! WriteCondition(aTableFilterFields2[i], bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! else if (nTableFilterFields == 1) ! { ! WriteCondition(aTableFilterFields2[0], bIsCaseSensitive, bUseRegularExpressions); ! } ! else ! { ! SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, sal_True, sal_True); ! sheet::TableFilterField2 aPrevFilterField = aTableFilterFields2[0]; ! sheet::FilterConnection aConnection = aTableFilterFields2[1].Connection; ! sal_Bool bOpenAndElement; ! rtl::OUString aName = rExport.GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, GetXMLToken(XML_FILTER_AND)); ! if (aConnection == sheet::FilterConnection_AND) ! { ! rExport.StartElement( aName, sal_True); ! bOpenAndElement = sal_True; ! } ! else ! bOpenAndElement = sal_False; ! for (sal_Int32 i = 1; i < nTableFilterFields; ++i) ! { ! if (aConnection != aTableFilterFields2[i].Connection) ! { ! aConnection = aTableFilterFields2[i].Connection; ! if (aTableFilterFields2[i].Connection == sheet::FilterConnection_AND) ! { ! rExport.StartElement( aName, sal_True ); ! bOpenAndElement = sal_True; ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields2[i]; ! if (i == nTableFilterFields - 1) ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! rExport.EndElement(aName, sal_True); ! bOpenAndElement = sal_False; ! } ! } ! else ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields2[i]; ! if (bOpenAndElement) ! { ! rExport.EndElement(aName, sal_True); ! bOpenAndElement = sal_False; ! } ! if (i == nTableFilterFields - 1) ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! } ! else ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields2[i]; ! if (i == nTableFilterFields - 1) ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! if(bOpenAndElement) ! rExport.EndElement(aName, sal_True); ! } ! } ! } ! } ! else ! { ! uno::Sequence< sheet::TableFilterField > aTableFilterFields( ! xSheetFilterDescriptor->getFilterFields() ); ! sal_Int32 nTableFilterFields = aTableFilterFields.getLength(); ! if (nTableFilterFields > 0) ! { ! uno::Reference xPropertySet (xSheetFilterDescriptor, uno::UNO_QUERY); ! if (xPropertySet.is()) ! { ! if (::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_COPYOUT))))) ! { ! table::CellAddress aOutputPosition; ! if (xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_OUTPOS))) >>= aOutputPosition) ! { ! rtl::OUString sOUCellAddress; ! ScRangeStringConverter::GetStringFromAddress( sOUCellAddress, aOutputPosition, pDoc ); ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_TARGET_RANGE_ADDRESS, sOUCellAddress); ! } ! } ! ScDBCollection* pDBCollection = pDoc->GetDBCollection(); ! sal_uInt16 nIndex; ! pDBCollection->SearchName(sDatabaseRangeName, nIndex); ! ScDBData* pDBData = (*pDBCollection)[nIndex]; ! ScRange aAdvSource; ! if (pDBData->GetAdvancedQuerySource(aAdvSource)) ! { ! rtl::OUString sOUCellAddress; ! ScRangeStringConverter::GetStringFromRange( sOUCellAddress, aAdvSource, pDoc ); ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_CONDITION_SOURCE_RANGE_ADDRESS, sOUCellAddress); ! } ! ! if (::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_SKIPDUP))))) ! rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_DISPLAY_DUPLICATES, XML_FALSE); ! SvXMLElementExport aElemF(rExport, XML_NAMESPACE_TABLE, XML_FILTER, sal_True, sal_True); ! rExport.CheckAttrList(); ! sal_Bool bIsCaseSensitive = ::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_ISCASE)))); ! sal_Bool bUseRegularExpressions = ::cppu::any2bool(xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_USEREGEX)))); ! sal_Bool bAnd = sal_False; ! sal_Bool bOr = sal_False; ! for (sal_Int32 i = 1; i < nTableFilterFields; ++i) ! { ! if (aTableFilterFields[i].Connection == sheet::FilterConnection_AND) ! bAnd = sal_True; ! else ! bOr = sal_True; ! } ! if (bOr && !bAnd) ! { ! SvXMLElementExport aElemOr(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, sal_True, sal_True); ! for (sal_Int32 i = 0; i < nTableFilterFields; ++i) ! { ! WriteCondition(aTableFilterFields[i], bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! else if (bAnd && !bOr) ! { ! SvXMLElementExport aElemAnd(rExport, XML_NAMESPACE_TABLE, XML_FILTER_AND, sal_True, sal_True); ! for (sal_Int32 i = 0; i < nTableFilterFields; ++i) ! { ! WriteCondition(aTableFilterFields[i], bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! else if (nTableFilterFields == 1) ! { ! WriteCondition(aTableFilterFields[0], bIsCaseSensitive, bUseRegularExpressions); ! } ! else ! { ! SvXMLElementExport aElemC(rExport, XML_NAMESPACE_TABLE, XML_FILTER_OR, sal_True, sal_True); ! sheet::TableFilterField aPrevFilterField = aTableFilterFields[0]; ! sheet::FilterConnection aConnection = aTableFilterFields[1].Connection; ! sal_Bool bOpenAndElement; ! rtl::OUString aName = rExport.GetNamespaceMap().GetQNameByKey(XML_NAMESPACE_TABLE, GetXMLToken(XML_FILTER_AND)); ! if (aConnection == sheet::FilterConnection_AND) ! { ! rExport.StartElement( aName, sal_True); ! bOpenAndElement = sal_True; ! } ! else ! bOpenAndElement = sal_False; ! for (sal_Int32 i = 1; i < nTableFilterFields; ++i) ! { ! if (aConnection != aTableFilterFields[i].Connection) ! { ! aConnection = aTableFilterFields[i].Connection; ! if (aTableFilterFields[i].Connection == sheet::FilterConnection_AND) ! { ! rExport.StartElement( aName, sal_True ); ! bOpenAndElement = sal_True; ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields[i]; ! if (i == nTableFilterFields - 1) ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! rExport.EndElement(aName, sal_True); ! bOpenAndElement = sal_False; ! } ! } ! else ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields[i]; ! if (bOpenAndElement) ! { ! rExport.EndElement(aName, sal_True); ! bOpenAndElement = sal_False; ! } ! if (i == nTableFilterFields - 1) ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! } ! else ! { ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! aPrevFilterField = aTableFilterFields[i]; ! if (i == nTableFilterFields - 1) ! WriteCondition(aPrevFilterField, bIsCaseSensitive, bUseRegularExpressions); ! } ! } ! if(bOpenAndElement) ! rExport.EndElement(aName, sal_True); ! } ! } ! } ! } } void ScXMLExportDatabaseRanges::WriteSortDescriptor(const uno::Sequence aSortProperties) diff -cNr sc.orig/source/filter/xml/XMLExportDatabaseRanges.hxx sc/source/filter/xml/XMLExportDatabaseRanges.hxx *** sc.orig/source/filter/xml/XMLExportDatabaseRanges.hxx Tue Mar 11 13:31:46 2008 --- sc/source/filter/xml/XMLExportDatabaseRanges.hxx Thu Mar 13 10:44:18 2008 *************** *** 45,56 **** --- 45,65 ---- #ifndef _COM_SUN_STAR_SHEET_FILTEROPERATOR_HPP_ #include #endif + #ifndef _COM_SUN_STAR_SHEET_FILTEROPERATOR2_HPP_ + #include + #endif #ifndef _COM_SUN_STAR_SHEET_TABLEFILTERFIELD_HPP_ #include #endif + #ifndef _COM_SUN_STAR_SHEET_TABLEFILTERFIELD2_HPP_ + #include + #endif #ifndef _COM_SUN_STAR_SHEET_XSHEETFILTERDESCRIPTOR_HPP_ #include #endif + #ifndef _COM_SUN_STAR_SHEET_XSHEETFILTERDESCRIPTOR2_HPP_ + #include + #endif #ifndef _COM_SUN_STAR_SHEET_XSUBTOTALDESCRIPTOR_HPP_ #include #endif *************** *** 69,75 **** --- 78,86 ---- void WriteImportDescriptor(const com::sun::star::uno::Sequence aImportDescriptor); rtl::OUString getOperatorXML(const com::sun::star::sheet::FilterOperator aFilterOperator, const sal_Bool bUseRegularExpressions) const; + rtl::OUString getOperatorXML(const long aFilterOperator, const sal_Bool bUseRegularExpressions) const; void WriteCondition(const com::sun::star::sheet::TableFilterField& aFilterField, sal_Bool bIsCaseSensitive, sal_Bool bUseRegularExpressions); + void WriteCondition(const com::sun::star::sheet::TableFilterField2& aFilterField, sal_Bool bIsCaseSensitive, sal_Bool bUseRegularExpressions); void WriteFilterDescriptor(const com::sun::star::uno::Reference & xSheetFilterDescriptor, const rtl::OUString sDatabaseRangeName); void WriteSortDescriptor(const com::sun::star::uno::Sequence aSortProperties); void WriteSubTotalDescriptor(const com::sun::star::uno::Reference xSubTotalDescriptor, const rtl::OUString sDatabaseRangeName);