[Libreoffice-commits] core.git: sc/source
Jochen Nitschke
j.nitschke+logerrit at ok.de
Tue Jan 3 00:16:03 UTC 2017
sc/source/filter/inc/defnamesbuffer.hxx | 1 +
sc/source/filter/inc/formulabase.hxx | 4 ++++
sc/source/filter/inc/pivotcachebuffer.hxx | 1 -
sc/source/filter/oox/defnamesbuffer.cxx | 9 +++++++++
sc/source/filter/oox/formulabase.cxx | 13 +++++++++++++
sc/source/filter/oox/pivotcachebuffer.cxx | 6 +-----
6 files changed, 28 insertions(+), 6 deletions(-)
New commits:
commit 77dc03c29501234bb07170004a7b8204987bad0c
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date: Fri Dec 30 15:14:18 2016 +0100
tdf#48140 replace CellRangeAddress in xlsx import (2)
Change-Id: I91115c65671910e4208cb14ae3837ff2129af472
Reviewed-on: https://gerrit.libreoffice.org/32571
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/defnamesbuffer.hxx b/sc/source/filter/inc/defnamesbuffer.hxx
index 7a2417d..5a6c812 100644
--- a/sc/source/filter/inc/defnamesbuffer.hxx
+++ b/sc/source/filter/inc/defnamesbuffer.hxx
@@ -118,6 +118,7 @@ public:
inline sal_Int32 getTokenIndex() const { return mnTokenIndex; }
/** Tries to resolve the defined name to an absolute cell range. */
bool getAbsoluteRange( css::table::CellRangeAddress& orRange ) const;
+ bool getAbsoluteRange( ScRange& orRange ) const;
private:
typedef ::std::unique_ptr< StreamDataSequence > StreamDataSeqPtr;
diff --git a/sc/source/filter/inc/formulabase.hxx b/sc/source/filter/inc/formulabase.hxx
index f016f2c..91c67c8 100644
--- a/sc/source/filter/inc/formulabase.hxx
+++ b/sc/source/filter/inc/formulabase.hxx
@@ -697,6 +697,10 @@ public:
css::table::CellRangeAddress& orRange,
const ApiTokenSequence& rTokens,
bool bAllowRelative ) const;
+ bool extractCellRange(
+ ScRange& orRange,
+ const ApiTokenSequence& rTokens,
+ bool bAllowRelative ) const;
/** Tries to extract a cell range list from a formula token sequence.
diff --git a/sc/source/filter/inc/pivotcachebuffer.hxx b/sc/source/filter/inc/pivotcachebuffer.hxx
index 262aeba..dfb8ae8 100644
--- a/sc/source/filter/inc/pivotcachebuffer.hxx
+++ b/sc/source/filter/inc/pivotcachebuffer.hxx
@@ -20,7 +20,6 @@
#ifndef INCLUDED_SC_SOURCE_FILTER_INC_PIVOTCACHEBUFFER_HXX
#define INCLUDED_SC_SOURCE_FILTER_INC_PIVOTCACHEBUFFER_HXX
-#include <com/sun/star/table/CellRangeAddress.hpp>
#include <com/sun/star/util/DateTime.hpp>
#include <oox/helper/containerhelper.hxx>
#include <oox/helper/refvector.hxx>
diff --git a/sc/source/filter/oox/defnamesbuffer.cxx b/sc/source/filter/oox/defnamesbuffer.cxx
index 9bbaf53..b668d98 100644
--- a/sc/source/filter/oox/defnamesbuffer.cxx
+++ b/sc/source/filter/oox/defnamesbuffer.cxx
@@ -406,6 +406,15 @@ bool DefinedName::getAbsoluteRange( CellRangeAddress& orRange ) const
return getFormulaParser().extractCellRange( orRange, aFTokenSeq, false );
}
+bool DefinedName::getAbsoluteRange( ScRange& orRange ) const
+{
+ ScTokenArray* pTokenArray = mpScRangeData->GetCode();
+ Sequence< FormulaToken > aFTokenSeq;
+ ScTokenConversion::ConvertToTokenSequence(getScDocument(), aFTokenSeq, *pTokenArray);
+ return getFormulaParser().extractCellRange( orRange, aFTokenSeq, false );
+}
+
+
DefinedNamesBuffer::DefinedNamesBuffer( const WorkbookHelper& rHelper ) :
WorkbookHelper( rHelper )
{
diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx
index 6247aaf..5966c08 100644
--- a/sc/source/filter/oox/formulabase.cxx
+++ b/sc/source/filter/oox/formulabase.cxx
@@ -1610,6 +1610,19 @@ bool FormulaProcessorBase::extractCellRange( CellRangeAddress& orRange,
return false;
}
+bool FormulaProcessorBase::extractCellRange( ScRange& orRange,
+ const ApiTokenSequence& rTokens, bool bAllowRelative ) const
+{
+ ApiCellRangeList aRanges;
+ lclProcessRef( aRanges, extractReference( rTokens ), bAllowRelative, -1 );
+ if( !aRanges.empty() )
+ {
+ orRange = aRanges.getBaseAddress();
+ return true;
+ }
+ return false;
+}
+
void FormulaProcessorBase::extractCellRangeList( ApiCellRangeList& orRanges,
const ApiTokenSequence& rTokens, bool bAllowRelative, sal_Int32 nFilterBySheet ) const
{
diff --git a/sc/source/filter/oox/pivotcachebuffer.cxx b/sc/source/filter/oox/pivotcachebuffer.cxx
index fbdcfdd..685d163 100644
--- a/sc/source/filter/oox/pivotcachebuffer.cxx
+++ b/sc/source/filter/oox/pivotcachebuffer.cxx
@@ -49,7 +49,6 @@ namespace xls {
using namespace ::com::sun::star::container;
using namespace ::com::sun::star::sheet;
-using namespace ::com::sun::star::table;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::util;
@@ -1075,10 +1074,7 @@ void PivotCache::finalizeInternalSheetSource()
// local or global defined name
if( const DefinedName* pDefName = getDefinedNames().getByModelName( maSheetSrcModel.maDefName, nSheet ).get() )
{
- CellRangeAddress aCellRange = CellRangeAddress( maSheetSrcModel.maRange.aStart.Tab(),
- maSheetSrcModel.maRange.aStart.Col(), maSheetSrcModel.maRange.aStart.Row(),
- maSheetSrcModel.maRange.aEnd.Col(), maSheetSrcModel.maRange.aEnd.Row() );
- mbValidSource = pDefName->getAbsoluteRange( aCellRange );
+ mbValidSource = pDefName->getAbsoluteRange( maSheetSrcModel.maRange );
}
// table
else if( const Table* pTable = getTables().getTable( maSheetSrcModel.maDefName ).get() )
More information about the Libreoffice-commits
mailing list