summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJochen Nitschke <j.nitschke+logerrit@ok.de>2016-12-30 18:12:14 +0100
committerJochen Nitschke <j.nitschke+logerrit@ok.de>2017-01-03 00:18:09 +0000
commit470ea0a7ae1874064b09c711ee0a54f1a82ebfda (patch)
treee89183ef1876ecaa02ca7bfac5d7e63537975bba
parent152e2e9211ce993f365004bf9caf9ea85269489f (diff)
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@ok.de> Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
-rw-r--r--sc/source/filter/inc/addressconverter.hxx11
-rw-r--r--sc/source/filter/inc/viewsettings.hxx6
-rw-r--r--sc/source/filter/inc/workbookhelper.hxx4
-rw-r--r--sc/source/filter/inc/worksheethelper.hxx3
-rw-r--r--sc/source/filter/oox/addressconverter.cxx15
-rw-r--r--sc/source/filter/oox/viewsettings.cxx10
-rw-r--r--sc/source/filter/oox/workbookhelper.cxx14
-rw-r--r--sc/source/filter/oox/worksheethelper.cxx4
8 files changed, 35 insertions, 32 deletions
diff --git a/sc/source/filter/inc/addressconverter.hxx b/sc/source/filter/inc/addressconverter.hxx
index 9e6a71ecbdcb..8dbd932555f3 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 c7f343a34426..1ba44d1a497b 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 2887d4d3a0bd..2ea53ca69f66 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 0508b87e0c39..bd7c4ef15506 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 d071df437087..a8452cc7c798 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 99f7c4a9a9d3..26d99f5ec6f9 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 2d7d6a0b7234..0e67c303aaf1 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 92e95c808ae9..c83a29e2eee4 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 );
}
}