summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJochen Nitschke <j.nitschke+logerrit@ok.de>2016-12-31 03:53:42 +0100
committerJochen Nitschke <j.nitschke+logerrit@ok.de>2017-01-03 00:21:00 +0000
commitb144ec03020b9d717bd7ccad0e6e4c84aa3f9898 (patch)
treeca39e94087438a990f7e3b9293980637d28fe81b
parentc5c9b888d8d0c414a3b27619a6df9adfebf4f77f (diff)
tdf#48140 replace CellRangeAddress in xlsx import (11)
Change-Id: I033b2ddb720942882aad5ceaa8b140546f32356d Reviewed-on: https://gerrit.libreoffice.org/32580 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/formulabuffer.hxx8
-rw-r--r--sc/source/filter/inc/worksheethelper.hxx2
-rw-r--r--sc/source/filter/oox/formulabuffer.cxx19
-rw-r--r--sc/source/filter/oox/sheetdatacontext.cxx6
-rw-r--r--sc/source/filter/oox/worksheethelper.cxx2
5 files changed, 17 insertions, 20 deletions
diff --git a/sc/source/filter/inc/formulabuffer.hxx b/sc/source/filter/inc/formulabuffer.hxx
index 1d1bc7752d0a..9b0f28cc7f12 100644
--- a/sc/source/filter/inc/formulabuffer.hxx
+++ b/sc/source/filter/inc/formulabuffer.hxx
@@ -16,8 +16,6 @@
#include <salhelper/thread.hxx>
#include <osl/mutex.hxx>
#include "workbookhelper.hxx"
-#include <com/sun/star/table/CellAddress.hpp>
-#include <com/sun/star/table/CellRangeAddress.hpp>
#include <map>
#include <vector>
#include "worksheethelper.hxx"
@@ -67,8 +65,8 @@ public:
struct TokenRangeAddressItem
{
TokenAddressItem maTokenAndAddress;
- css::table::CellRangeAddress maCellRangeAddress;
- TokenRangeAddressItem( const TokenAddressItem& rTokenAndAddress, const css::table::CellRangeAddress& rCellRangeAddress ) : maTokenAndAddress( rTokenAndAddress ), maCellRangeAddress( rCellRangeAddress ) {}
+ ScRange maRange;
+ TokenRangeAddressItem( const TokenAddressItem& rTokenAndAddress, const ScRange& rRange ) : maTokenAndAddress( rTokenAndAddress ), maRange( rRange ) {}
};
struct FormulaValue
@@ -121,7 +119,7 @@ public:
void setCellFormulaValue(
const ScAddress& rAddress, const OUString& rValueStr, sal_Int32 nCellType );
- void setCellArrayFormula( const css::table::CellRangeAddress& rRangeAddress,
+ void setCellArrayFormula( const ScRange& rRangeAddress,
const ScAddress& rTokenAddress,
const OUString& );
diff --git a/sc/source/filter/inc/worksheethelper.hxx b/sc/source/filter/inc/worksheethelper.hxx
index e0d04ceee7d2..fdd2812ed4d1 100644
--- a/sc/source/filter/inc/worksheethelper.hxx
+++ b/sc/source/filter/inc/worksheethelper.hxx
@@ -294,7 +294,7 @@ public:
const ScAddress& rAddr, sal_Int32 nSharedId,
const OUString& rCellValue, sal_Int32 nValueType );
- void setCellArrayFormula( const css::table::CellRangeAddress& rRangeAddress, const ScAddress& rTokenAddress, const OUString& );
+ void setCellArrayFormula( const ScRange& rRangeAddress, const ScAddress& rTokenAddress, const OUString& rTokenStr );
void createSharedFormulaMapEntry(
const ScAddress& rAddress,
diff --git a/sc/source/filter/oox/formulabuffer.cxx b/sc/source/filter/oox/formulabuffer.cxx
index 003d0b96769b..dd00d4502bbb 100644
--- a/sc/source/filter/oox/formulabuffer.cxx
+++ b/sc/source/filter/oox/formulabuffer.cxx
@@ -13,7 +13,6 @@
#include "formulacell.hxx"
#include "document.hxx"
#include "documentimport.hxx"
-#include "convuno.hxx"
#include "rangelst.hxx"
#include "autonamecache.hxx"
@@ -27,7 +26,6 @@
using namespace com::sun::star;
using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::table;
using namespace ::com::sun::star::sheet;
using namespace ::com::sun::star::container;
@@ -233,19 +231,16 @@ void applyArrayFormulas(
ScDocumentImport& rDoc, SvNumberFormatter& rFormatter,
const std::vector<FormulaBuffer::TokenRangeAddressItem>& rArrays )
{
- std::vector<FormulaBuffer::TokenRangeAddressItem>::const_iterator it = rArrays.begin(), itEnd = rArrays.end();
- for (; it != itEnd; ++it)
+ for (const FormulaBuffer::TokenRangeAddressItem& rAddressItem : rArrays)
{
- const ScAddress& aPos = it->maTokenAndAddress.maCellAddress;
- ScRange aRange;
- ScUnoConversion::FillScRange(aRange, it->maCellRangeAddress);
+ const ScAddress& aPos = rAddressItem.maTokenAndAddress.maCellAddress;
ScCompiler aComp(&rDoc.getDoc(), aPos);
aComp.SetNumberFormatter(&rFormatter);
aComp.SetGrammar(formula::FormulaGrammar::GRAM_OOXML);
- std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(it->maTokenAndAddress.maTokenStr));
+ std::unique_ptr<ScTokenArray> pArray(aComp.CompileString(rAddressItem.maTokenAndAddress.maTokenStr));
if (pArray)
- rDoc.setMatrixCells(aRange, *pArray, formula::FormulaGrammar::GRAM_OOXML);
+ rDoc.setMatrixCells(rAddressItem.maRange, *pArray, formula::FormulaGrammar::GRAM_OOXML);
}
}
@@ -430,12 +425,12 @@ void FormulaBuffer::setCellFormula(
SharedFormulaDesc(rAddress, nSharedId, rCellValue, nValueType));
}
-void FormulaBuffer::setCellArrayFormula( const css::table::CellRangeAddress& rRangeAddress, const ScAddress& rTokenAddress, const OUString& rTokenStr )
+void FormulaBuffer::setCellArrayFormula( const ScRange& rRangeAddress, const ScAddress& rTokenAddress, const OUString& rTokenStr )
{
TokenAddressItem tokenPair( rTokenStr, rTokenAddress );
- assert( rRangeAddress.Sheet >= 0 && (size_t)rRangeAddress.Sheet < maCellArrayFormulas.size() );
- maCellArrayFormulas[ rRangeAddress.Sheet ].push_back( TokenRangeAddressItem( tokenPair, rRangeAddress ) );
+ assert( rRangeAddress.aStart.Tab() >= 0 && (size_t)rRangeAddress.aStart.Tab() < maCellArrayFormulas.size() );
+ maCellArrayFormulas[ rRangeAddress.aStart.Tab() ].push_back( TokenRangeAddressItem( tokenPair, rRangeAddress ) );
}
void FormulaBuffer::setCellFormulaValue(
diff --git a/sc/source/filter/oox/sheetdatacontext.cxx b/sc/source/filter/oox/sheetdatacontext.cxx
index 9c47da50b7b4..dc679314afc7 100644
--- a/sc/source/filter/oox/sheetdatacontext.cxx
+++ b/sc/source/filter/oox/sheetdatacontext.cxx
@@ -173,7 +173,11 @@ void SheetDataContext::onEndElement()
break;
case XML_array:
if( mbValidRange && maFmlaData.isValidArrayRef( maCellData.maCellAddr ) )
- setCellArrayFormula( maFmlaData.maFormulaRef, maCellData.maCellAddr, maFormulaStr );
+ {
+ ScRange aRangeAddr( maFmlaData.maFormulaRef.StartColumn, maFmlaData.maFormulaRef.StartRow, maFmlaData.maFormulaRef.Sheet,
+ maFmlaData.maFormulaRef.EndColumn, maFmlaData.maFormulaRef.EndRow, maFmlaData.maFormulaRef.Sheet);
+ setCellArrayFormula( aRangeAddr, maCellData.maCellAddr, maFormulaStr );
+ }
// set cell formatting, but do not set result as cell value
mrSheetData.setBlankCell( maCellData );
break;
diff --git a/sc/source/filter/oox/worksheethelper.cxx b/sc/source/filter/oox/worksheethelper.cxx
index 832f97e98348..2eccb8244c3d 100644
--- a/sc/source/filter/oox/worksheethelper.cxx
+++ b/sc/source/filter/oox/worksheethelper.cxx
@@ -1592,7 +1592,7 @@ void WorksheetHelper::setCellFormula(
getFormulaBuffer().setCellFormula(rAddr, nSharedId, rCellValue, nValueType);
}
-void WorksheetHelper::setCellArrayFormula( const css::table::CellRangeAddress& rRangeAddress, const ScAddress& rTokenAddress, const OUString& rTokenStr )
+void WorksheetHelper::setCellArrayFormula( const ScRange& rRangeAddress, const ScAddress& rTokenAddress, const OUString& rTokenStr )
{
getFormulaBuffer().setCellArrayFormula( rRangeAddress, rTokenAddress, rTokenStr );
}