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

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


 sc/source/filter/inc/addressconverter.hxx |   11 +++++++++++
 sc/source/filter/inc/viewsettings.hxx     |    6 ++----
 sc/source/filter/inc/workbookhelper.hxx   |    4 ----
 sc/source/filter/inc/worksheethelper.hxx  |    3 +--
 sc/source/filter/oox/addressconverter.cxx |   15 +++++++++++++++
 sc/source/filter/oox/viewsettings.cxx     |   10 ++++------
 sc/source/filter/oox/workbookhelper.cxx   |   14 --------------
 sc/source/filter/oox/worksheethelper.cxx  |    4 ++--
 8 files changed, 35 insertions(+), 32 deletions(-)

New commits:
commit 470ea0a7ae1874064b09c711ee0a54f1a82ebfda
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date:   Fri Dec 30 18:12:14 2016 +0100

    tdf#48140 replace CellRangeAddress in xlsx import (6)&(7)
    
    Change-Id: Idc44249b96009633f63b72dd51a74e51bef41284
    Reviewed-on: https://gerrit.libreoffice.org/32576
    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/addressconverter.hxx b/sc/source/filter/inc/addressconverter.hxx
index 9e6a71e..8dbd932 100644
--- a/sc/source/filter/inc/addressconverter.hxx
+++ b/sc/source/filter/inc/addressconverter.hxx
@@ -451,6 +451,11 @@ public:
                             const OUString& rString,
                             sal_Int16 nSheet,
                             bool bAllowOverflow, bool bTrackOverflow );
+    bool                convertToCellRange(
+                            ScRange& orRange,
+                            const OUString& rString,
+                            sal_Int16 nSheet,
+                            bool bAllowOverflow, bool bTrackOverflow );
 
     /** Converts the passed range to a cell range address, without checking any
         sheet limits.
@@ -496,6 +501,12 @@ public:
                             const BinRange& rBinRange,
                             sal_Int16 nSheet,
                             bool bAllowOverflow, bool bTrackOverflow );
+    bool                convertToCellRange(
+                            ScRange& orRange,
+                            const BinRange& rBinRange,
+                            sal_Int16 nSheet,
+                            bool bAllowOverflow, bool bTrackOverflow );
+
 
     /** Tries to restrict the passed cell range list to current sheet limits.
 
diff --git a/sc/source/filter/inc/viewsettings.hxx b/sc/source/filter/inc/viewsettings.hxx
index c7f343a..1ba44d1 100644
--- a/sc/source/filter/inc/viewsettings.hxx
+++ b/sc/source/filter/inc/viewsettings.hxx
@@ -20,7 +20,6 @@
 #ifndef INCLUDED_SC_SOURCE_FILTER_INC_VIEWSETTINGS_HXX
 #define INCLUDED_SC_SOURCE_FILTER_INC_VIEWSETTINGS_HXX
 
-#include <com/sun/star/table/CellRangeAddress.hpp>
 #include "addressconverter.hxx"
 #include "stylesbuffer.hxx"
 #include "worksheethelper.hxx"
@@ -178,14 +177,13 @@ private:
     typedef RefVector< WorkbookViewModel >                                      WorkbookViewModelVec;
     typedef RefMap< sal_Int16, SheetViewModel >                                 SheetViewModelMap;
     typedef ::std::map< sal_Int16, css::uno::Any >                 SheetPropertiesMap;
-    typedef ::std::map< sal_Int16, css::table::CellRangeAddress >  SheetUsedAreaMap;
+    typedef ::std::map< sal_Int16, ScRange >                                    SheetUsedAreaMap;
 
     WorkbookViewModelVec maBookViews;       /// Workbook view models.
     SheetViewModelMap   maSheetViews;       /// Active view model for each sheet.
     SheetPropertiesMap  maSheetProps;       /// Converted property sequences for each sheet.
     SheetUsedAreaMap    maSheetUsedAreas;   /// Used area (cell range) of every sheet.
-    css::table::CellRangeAddress
-                        maOleSize;          /// Visible area if this is an embedded OLE object.
+    ScRange             maOleSize;          /// Visible area if this is an embedded OLE object.
     bool                mbValidOleSize;     /// True = imported OLE size is a valid cell range.
 };
 
diff --git a/sc/source/filter/inc/workbookhelper.hxx b/sc/source/filter/inc/workbookhelper.hxx
index 2887d4d..2ea53ca 100644
--- a/sc/source/filter/inc/workbookhelper.hxx
+++ b/sc/source/filter/inc/workbookhelper.hxx
@@ -154,12 +154,8 @@ public:
 
     /** Returns the XCellRange interface for the passed cell range address. */
     css::uno::Reference< css::table::XCellRange >
-                        getCellRangeFromDoc(
-                            const css::table::CellRangeAddress& rRange ) const;
-    css::uno::Reference< css::table::XCellRange >
                         getCellRangeFromDoc( const ScRange& rRange ) const;
 
-
     /** Returns the cell styles container from the Calc document. */
     css::uno::Reference< css::container::XNameContainer >
                         getCellStyleFamily() const;
diff --git a/sc/source/filter/inc/worksheethelper.hxx b/sc/source/filter/inc/worksheethelper.hxx
index 0508b87..bd7c4ef 100644
--- a/sc/source/filter/inc/worksheethelper.hxx
+++ b/sc/source/filter/inc/worksheethelper.hxx
@@ -124,8 +124,7 @@ struct PageBreakModel
 /** Stores data about a hyperlink range. */
 struct HyperlinkModel : public ::oox::ole::StdHlinkInfo
 {
-    css::table::CellRangeAddress
-                        maRange;            /// The cell area containing the hyperlink.
+    ScRange             maRange;            /// The cell area containing the hyperlink.
     OUString            maTooltip;          /// Additional tooltip text.
 
     explicit            HyperlinkModel();
diff --git a/sc/source/filter/oox/addressconverter.cxx b/sc/source/filter/oox/addressconverter.cxx
index d071df4..a8452cc 100644
--- a/sc/source/filter/oox/addressconverter.cxx
+++ b/sc/source/filter/oox/addressconverter.cxx
@@ -453,6 +453,14 @@ bool AddressConverter::convertToCellRange( CellRangeAddress& orRange,
         validateCellRange( orRange, bAllowOverflow, bTrackOverflow );
 }
 
+bool AddressConverter::convertToCellRange( ScRange& orRange,
+        const OUString& rString, sal_Int16 nSheet, bool bAllowOverflow, bool bTrackOverflow )
+{
+    return
+        convertToCellRangeUnchecked( orRange, rString, nSheet ) &&
+        validateCellRange( orRange, bAllowOverflow, bTrackOverflow );
+}
+
 void AddressConverter::convertToCellRangeUnchecked( CellRangeAddress& orRange,
         const BinRange& rBinRange, sal_Int16 nSheet )
 {
@@ -481,6 +489,13 @@ bool AddressConverter::convertToCellRange( CellRangeAddress& orRange,
     return validateCellRange( orRange, bAllowOverflow, bTrackOverflow );
 }
 
+bool AddressConverter::convertToCellRange( ScRange& orRange,
+        const BinRange& rBinRange, sal_Int16 nSheet, bool bAllowOverflow, bool bTrackOverflow )
+{
+    convertToCellRangeUnchecked( orRange, rBinRange, nSheet );
+    return validateCellRange( orRange, bAllowOverflow, bTrackOverflow );
+}
+
 void AddressConverter::validateCellRangeList( ApiCellRangeList& orRanges, bool bTrackOverflow )
 {
     for( size_t nIndex = orRanges.size(); nIndex > 0; --nIndex )
diff --git a/sc/source/filter/oox/viewsettings.cxx b/sc/source/filter/oox/viewsettings.cxx
index 99f7c4a..26d99f5 100644
--- a/sc/source/filter/oox/viewsettings.cxx
+++ b/sc/source/filter/oox/viewsettings.cxx
@@ -49,7 +49,6 @@ namespace xls {
 using namespace ::com::sun::star::awt;
 using namespace ::com::sun::star::container;
 using namespace ::com::sun::star::document;
-using namespace ::com::sun::star::table;
 using namespace ::com::sun::star::uno;
 
 using ::oox::core::FilterBase;
@@ -538,9 +537,7 @@ void ViewSettings::setSheetUsedArea( const ScRange& rUsedArea )
     assert( rUsedArea.IsValid() );
     assert( rUsedArea.aStart.Col() <= MAXCOLCOUNT );
     assert( rUsedArea.aStart.Row() <= MAXROWCOUNT );
-    maSheetUsedAreas[ rUsedArea.aStart.Tab() ] = CellRangeAddress( rUsedArea.aStart.Tab(),
-                                                                   rUsedArea.aStart.Col(), rUsedArea.aStart.Row(),
-                                                                   rUsedArea.aEnd.Col(), rUsedArea.aEnd.Row() );
+    maSheetUsedAreas[ rUsedArea.aStart.Tab() ] = rUsedArea;
 }
 
 void ViewSettings::finalizeImport()
@@ -601,8 +598,9 @@ void ViewSettings::finalizeImport()
         #i44077# If a new OLE object is inserted from file, there is no OLESIZE
         record in the Excel file. In this case, use the used area calculated
         from file contents (used cells and drawing objects). */
-    maOleSize.Sheet = nActiveSheet;
-    const CellRangeAddress* pVisibleArea = mbValidOleSize ?
+    maOleSize.aStart.SetTab( nActiveSheet );
+    maOleSize.aEnd.SetTab( nActiveSheet );
+    const ScRange* pVisibleArea = mbValidOleSize ?
         &maOleSize : ContainerHelper::getMapElement( maSheetUsedAreas, nActiveSheet );
     if( pVisibleArea )
     {
diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx
index 2d7d6a0..0e67c30 100644
--- a/sc/source/filter/oox/workbookhelper.cxx
+++ b/sc/source/filter/oox/workbookhelper.cxx
@@ -785,20 +785,6 @@ Reference< XSpreadsheet > WorkbookHelper::getSheetFromDoc( const OUString& rShee
     return xSheet;
 }
 
-Reference< XCellRange > WorkbookHelper::getCellRangeFromDoc( const CellRangeAddress& rRange ) const
-{
-    Reference< XCellRange > xRange;
-    try
-    {
-        Reference< XSpreadsheet > xSheet( getSheetFromDoc( rRange.Sheet ), UNO_SET_THROW );
-        xRange = xSheet->getCellRangeByPosition( rRange.StartColumn, rRange.StartRow, rRange.EndColumn, rRange.EndRow );
-    }
-    catch( Exception& )
-    {
-    }
-    return xRange;
-}
-
 Reference< XCellRange > WorkbookHelper::getCellRangeFromDoc( const ScRange& rRange ) const
 {
     Reference< XCellRange > xRange;
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 92e95c8..c83a29e 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -975,8 +975,8 @@ void WorksheetGlobals::finalizeHyperlinkRanges()
         OUString aUrl = getHyperlinkUrl( *aIt );
         // try to insert URL into each cell of the range
         if( !aUrl.isEmpty() )
-            for( CellAddress aAddress( getSheetIndex(), aIt->maRange.StartColumn, aIt->maRange.StartRow ); aAddress.Row <= aIt->maRange.EndRow; ++aAddress.Row )
-                for( aAddress.Column = aIt->maRange.StartColumn; aAddress.Column <= aIt->maRange.EndColumn; ++aAddress.Column )
+            for( CellAddress aAddress( getSheetIndex(), aIt->maRange.aStart.Col(), aIt->maRange.aStart.Row() ); aAddress.Row <= aIt->maRange.aEnd.Row(); ++aAddress.Row )
+                for( aAddress.Column = aIt->maRange.aStart.Col(); aAddress.Column <= aIt->maRange.aEnd.Col(); ++aAddress.Column )
                     insertHyperlink( aAddress, aUrl );
     }
 }


More information about the Libreoffice-commits mailing list