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+loger...@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+loger...@ok.de> Reviewed-by: Jochen Nitschke <j.nitschke+loger...@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 ); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits