[Libreoffice-commits] core.git: sc/source

Jochen Nitschke j.nitschke+logerrit at ok.de
Tue Jan 3 00:20:20 UTC 2017


 sc/source/filter/inc/workbookhelper.hxx   |    6 +----
 sc/source/filter/oox/autofilterbuffer.cxx |    4 +--
 sc/source/filter/oox/tablebuffer.cxx      |    6 -----
 sc/source/filter/oox/workbookhelper.cxx   |   35 ++++++++++++++----------------
 4 files changed, 22 insertions(+), 29 deletions(-)

New commits:
commit a1a44eb3b305f1aad77b0cc1532c98016482f620
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date:   Sun Jan 1 14:36:03 2017 +0100

    tdf#48140 replace CellRangeAddress in xlsx import (9)
    
    Change-Id: If0b9d35305c4e109cb3edf8c5041d95854cd6c28
    Reviewed-on: https://gerrit.libreoffice.org/32578
    Tested-by: Jochen Nitschke <j.nitschke+logerrit at ok.de>
    Reviewed-by: Jochen Nitschke <j.nitschke+logerrit at ok.de>

diff --git a/sc/source/filter/inc/workbookhelper.hxx b/sc/source/filter/inc/workbookhelper.hxx
index 2ea53ca..7b6a073 100644
--- a/sc/source/filter/inc/workbookhelper.hxx
+++ b/sc/source/filter/inc/workbookhelper.hxx
@@ -36,8 +36,6 @@ namespace com { namespace sun { namespace star {
     namespace sheet { class XSpreadsheetDocument; }
     namespace sheet { struct FormulaToken; }
     namespace style { class XStyle; }
-    namespace table { struct CellAddress; }
-    namespace table { struct CellRangeAddress; }
     namespace table { class XCell; }
     namespace table { class XCellRange; }
 } } }
@@ -187,13 +185,13 @@ public:
     css::uno::Reference< css::sheet::XDatabaseRange >
                         createDatabaseRangeObject(
                             OUString& orName,
-                            const css::table::CellRangeAddress& rRangeAddr ) const;
+                            const ScRange& rRangeAddr ) const;
 
     /** Creates and returns an unnamed database range on-the-fly in the Calc document.
         The range will not be buffered in the global table buffer. */
     css::uno::Reference< css::sheet::XDatabaseRange >
                         createUnnamedDatabaseRangeObject(
-                            const css::table::CellRangeAddress& rRangeAddr ) const;
+                            const ScRange& rRangeAddr ) const;
 
     /** Finds the (already existing) database range of the given formula token index. */
     ScDBData* findDatabaseRangeByIndex( sal_uInt16 nIndex ) const;
diff --git a/sc/source/filter/oox/autofilterbuffer.cxx b/sc/source/filter/oox/autofilterbuffer.cxx
index a657834..fab9638 100644
--- a/sc/source/filter/oox/autofilterbuffer.cxx
+++ b/sc/source/filter/oox/autofilterbuffer.cxx
@@ -651,8 +651,8 @@ void AutoFilterBuffer::finalizeImport( sal_Int16 nSheet )
     // rely on existence of the defined name '_FilterDatabase' containing the range address of the filtered area
     if( const DefinedName* pFilterDBName = getDefinedNames().getByBuiltinId( BIFF_DEFNAME_FILTERDATABASE, nSheet ).get() )
     {
-        CellRangeAddress aFilterRange;
-        if( pFilterDBName->getAbsoluteRange( aFilterRange ) && (aFilterRange.Sheet == nSheet) )
+        ScRange aFilterRange;
+        if( pFilterDBName->getAbsoluteRange( aFilterRange ) && (aFilterRange.aStart.Tab() == nSheet) )
         {
             // use the same name for the database range as used for the defined name '_FilterDatabase'
             Reference< XDatabaseRange > xDatabaseRange = createUnnamedDatabaseRangeObject( aFilterRange );
diff --git a/sc/source/filter/oox/tablebuffer.cxx b/sc/source/filter/oox/tablebuffer.cxx
index 737d0ce..e3fdbe3 100644
--- a/sc/source/filter/oox/tablebuffer.cxx
+++ b/sc/source/filter/oox/tablebuffer.cxx
@@ -90,13 +90,9 @@ void Table::finalizeImport()
     if( (maModel.mnId > 0) && !maModel.maDisplayName.isEmpty() ) try
     {
         maDBRangeName = maModel.maDisplayName;
-        ::css::table::CellRangeAddress aCellRangeAddress = ::css::table::CellRangeAddress(
-                    maModel.maRange.aStart.Tab(),
-                    maModel.maRange.aStart.Col(), maModel.maRange.aStart.Row(),
-                    maModel.maRange.aEnd.Col(), maModel.maRange.aEnd.Row() );
 
         Reference< XDatabaseRange > xDatabaseRange(
-            createDatabaseRangeObject( maDBRangeName, aCellRangeAddress ), UNO_SET_THROW);
+            createDatabaseRangeObject( maDBRangeName, maModel.maRange ), UNO_SET_THROW);
         ::css::table::CellRangeAddress aAddressRange = xDatabaseRange->getDataArea();
         maDestRange = ScRange( aAddressRange.StartColumn, aAddressRange.StartRow, aAddressRange.Sheet,
                                aAddressRange.EndColumn, aAddressRange.EndRow, aAddressRange.Sheet );
diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx
index 0e67c30..5dd584a 100644
--- a/sc/source/filter/oox/workbookhelper.cxx
+++ b/sc/source/filter/oox/workbookhelper.cxx
@@ -63,7 +63,6 @@
 #include "rangenam.hxx"
 #include "tokenarray.hxx"
 #include "tokenuno.hxx"
-#include "convuno.hxx"
 #include "dbdata.hxx"
 #include "datauno.hxx"
 #include "globalnames.hxx"
@@ -157,9 +156,9 @@ public:
     /** Creates and returns a defined name on the-fly in the correct Calc sheet. */
     ScRangeData* createLocalNamedRangeObject( OUString& orName, const Sequence< FormulaToken>& rTokens, sal_Int32 nIndex, sal_Int32 nNameFlags, sal_Int32 nTab );
     /** Creates and returns a database range on-the-fly in the Calc document. */
-    Reference< XDatabaseRange > createDatabaseRangeObject( OUString& orName, const CellRangeAddress& rRangeAddr );
+    Reference< XDatabaseRange > createDatabaseRangeObject( OUString& orName, const ScRange& rRangeAddr );
     /** Creates and returns an unnamed database range on-the-fly in the Calc document. */
-    Reference< XDatabaseRange > createUnnamedDatabaseRangeObject( const CellRangeAddress& rRangeAddr );
+    Reference< XDatabaseRange > createUnnamedDatabaseRangeObject( const ScRange& rRangeAddr );
     /** Finds the (already existing) database range of the given formula token index. */
     ScDBData* findDatabaseRangeByIndex( sal_uInt16 nIndex );
     /** Creates and returns a com.sun.star.style.Style object for cells or pages. */
@@ -423,10 +422,10 @@ ScRangeData* WorkbookGlobals::createLocalNamedRangeObject(
     return pScRangeData;
 }
 
-Reference< XDatabaseRange > WorkbookGlobals::createDatabaseRangeObject( OUString& orName, const CellRangeAddress& rRangeAddr )
+Reference< XDatabaseRange > WorkbookGlobals::createDatabaseRangeObject( OUString& orName, const ScRange& rRangeAddr )
 {
     // validate cell range
-    CellRangeAddress aDestRange = rRangeAddr;
+    ScRange aDestRange = rRangeAddr;
     bool bValidRange = getAddressConverter().validateCellRange( aDestRange, true, true );
 
     // create database range and insert it into the Calc document
@@ -438,7 +437,9 @@ Reference< XDatabaseRange > WorkbookGlobals::createDatabaseRangeObject( OUString
         Reference< XDatabaseRanges > xDatabaseRanges( aDocProps.getAnyProperty( PROP_DatabaseRanges ), UNO_QUERY_THROW );
         orName = ContainerHelper::getUnusedName( xDatabaseRanges, orName, '_' );
         // create the database range
-        xDatabaseRanges->addNewByName( orName, aDestRange );
+        CellRangeAddress aApiRange( aDestRange.aStart.Tab(), aDestRange.aStart.Col(), aDestRange.aStart.Row(),
+                                    aDestRange.aEnd.Col(), aDestRange.aEnd.Row() );
+        xDatabaseRanges->addNewByName( orName, aApiRange );
         xDatabaseRange.set( xDatabaseRanges->getByName( orName ), UNO_QUERY );
     }
     catch( Exception& )
@@ -448,10 +449,10 @@ Reference< XDatabaseRange > WorkbookGlobals::createDatabaseRangeObject( OUString
     return xDatabaseRange;
 }
 
-Reference< XDatabaseRange > WorkbookGlobals::createUnnamedDatabaseRangeObject( const CellRangeAddress& rRangeAddr )
+Reference< XDatabaseRange > WorkbookGlobals::createUnnamedDatabaseRangeObject( const ScRange& rRangeAddr )
 {
     // validate cell range
-    CellRangeAddress aDestRange = rRangeAddr;
+    ScRange aDestRange = rRangeAddr;
     bool bValidRange = getAddressConverter().validateCellRange( aDestRange, true, true );
 
     // create database range and insert it into the Calc document
@@ -459,16 +460,14 @@ Reference< XDatabaseRange > WorkbookGlobals::createUnnamedDatabaseRangeObject( c
     if( bValidRange ) try
     {
         ScDocument& rDoc =  getScDocument();
-        if( rDoc.GetTableCount() <= aDestRange.Sheet )
+        if( rDoc.GetTableCount() <= aDestRange.aStart.Tab() )
             throw css::lang::IndexOutOfBoundsException();
-        ScRange aScRange;
-        ScUnoConversion::FillScRange(aScRange, aDestRange);
-        ScDBData* pNewDBData = new ScDBData( STR_DB_LOCAL_NONAME, aScRange.aStart.Tab(),
-                                       aScRange.aStart.Col(), aScRange.aStart.Row(),
-                                       aScRange.aEnd.Col(), aScRange.aEnd.Row() );
-        rDoc.SetAnonymousDBData( aScRange.aStart.Tab() , pNewDBData );
+        ScDBData* pNewDBData = new ScDBData( STR_DB_LOCAL_NONAME, aDestRange.aStart.Tab(),
+                                       aDestRange.aStart.Col(), aDestRange.aStart.Row(),
+                                       aDestRange.aEnd.Col(), aDestRange.aEnd.Row() );
+        rDoc.SetAnonymousDBData( aDestRange.aStart.Tab() , pNewDBData );
         ScDocShell* pDocSh = static_cast< ScDocShell* >(rDoc.GetDocumentShell());
-        xDatabaseRange.set(new ScDatabaseRangeObj(pDocSh, aScRange.aStart.Tab()));
+        xDatabaseRange.set(new ScDatabaseRangeObj(pDocSh, aDestRange.aStart.Tab()));
     }
     catch( Exception& )
     {
@@ -819,12 +818,12 @@ ScRangeData* WorkbookHelper::createLocalNamedRangeObject( OUString& orName, cons
     return mrBookGlob.createLocalNamedRangeObject( orName, rTokens, nIndex, nNameFlags, nTab );
 }
 
-Reference< XDatabaseRange > WorkbookHelper::createDatabaseRangeObject( OUString& orName, const CellRangeAddress& rRangeAddr ) const
+Reference< XDatabaseRange > WorkbookHelper::createDatabaseRangeObject( OUString& orName, const ScRange& rRangeAddr ) const
 {
     return mrBookGlob.createDatabaseRangeObject( orName, rRangeAddr );
 }
 
-Reference< XDatabaseRange > WorkbookHelper::createUnnamedDatabaseRangeObject( const CellRangeAddress& rRangeAddr ) const
+Reference< XDatabaseRange > WorkbookHelper::createUnnamedDatabaseRangeObject( const ScRange& rRangeAddr ) const
 {
     return mrBookGlob.createUnnamedDatabaseRangeObject( rRangeAddr );
 }


More information about the Libreoffice-commits mailing list