summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJochen Nitschke <j.nitschke+logerrit@ok.de>2017-01-03 11:30:17 +0100
committerJochen Nitschke <j.nitschke+logerrit@ok.de>2017-01-03 17:11:02 +0000
commit4c53e17d47bea97168bd07630ccf781639dd03d1 (patch)
tree89c76887ddba65cdc1a8ccb301d56de30a5ea8b1
parent2b2c764044659b233f57dd20b9f3c9d0d1e6f7e6 (diff)
tdf#48140 replace CellRangeAddress in xlsx import (12)
Change-Id: Iec9ea10992ae031c4362a913792f738b2b45f199 Reviewed-on: https://gerrit.libreoffice.org/32662 Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de> Tested-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
-rw-r--r--sc/source/filter/inc/sheetdatabuffer.hxx9
-rw-r--r--sc/source/filter/oox/sheetdatabuffer.cxx30
-rw-r--r--sc/source/filter/oox/worksheetfragment.cxx5
3 files changed, 20 insertions, 24 deletions
diff --git a/sc/source/filter/inc/sheetdatabuffer.hxx b/sc/source/filter/inc/sheetdatabuffer.hxx
index 9da32e68a304..79758dd15316 100644
--- a/sc/source/filter/inc/sheetdatabuffer.hxx
+++ b/sc/source/filter/inc/sheetdatabuffer.hxx
@@ -139,7 +139,7 @@ public:
/** Sets default cell formatting for the specified range of rows. */
void setRowFormat( sal_Int32 nRow, sal_Int32 nXfId, bool bCustomFormat );
/** Merges the cells in the passed cell range. */
- void setMergedRange( const css::table::CellRangeAddress& rRange );
+ void setMergedRange( const ScRange& rRange );
/** Processes the cell formatting data of the passed cell. */
void setCellFormat( const CellModel& rModel );
@@ -167,7 +167,7 @@ private:
const css::table::CellRangeAddress& rRange, const DataTableModel& rModel );
/** Writes all cell formatting attributes to the passed cell range list. (depreciates writeXfIdRangeProperties) */
- void applyCellMerging( const css::table::CellRangeAddress& rRange );
+ void applyCellMerging( const ScRange& rRange );
void addColXfStyle( sal_Int32 nXfId, sal_Int32 nFormatId, const css::table::CellRangeAddress& rAddress, bool bProcessRowRange = false );
private:
/** Stores cell range address and formula token array of an array formula. */
@@ -211,11 +211,10 @@ private:
/** Stores information about a merged cell range. */
struct MergedRange
{
- css::table::CellRangeAddress
- maRange; /// The formatted cell range.
+ ScRange maRange; /// The formatted cell range.
sal_Int32 mnHorAlign; /// Horizontal alignment in the range.
- explicit MergedRange( const css::table::CellRangeAddress& rRange );
+ explicit MergedRange( const ScRange& rRange );
explicit MergedRange( const ScAddress& rAddress, sal_Int32 nHorAlign );
bool tryExpand( const ScAddress& rAddress, sal_Int32 nHorAlign );
};
diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx
index 8f0cb3221503..e0025ec81779 100644
--- a/sc/source/filter/oox/sheetdatabuffer.cxx
+++ b/sc/source/filter/oox/sheetdatabuffer.cxx
@@ -322,7 +322,7 @@ void SheetDataBuffer::setRowFormat( sal_Int32 nRow, sal_Int32 nXfId, bool bCusto
}
}
-void SheetDataBuffer::setMergedRange( const CellRangeAddress& rRange )
+void SheetDataBuffer::setMergedRange( const ScRange& rRange )
{
maMergedRanges.push_back( MergedRange( rRange ) );
}
@@ -526,24 +526,24 @@ bool SheetDataBuffer::XfIdRowRange::tryExpand( sal_Int32 nRow, sal_Int32 nXfId )
return false;
}
-SheetDataBuffer::MergedRange::MergedRange( const CellRangeAddress& rRange ) :
+SheetDataBuffer::MergedRange::MergedRange( const ScRange& rRange ) :
maRange( rRange ),
mnHorAlign( XML_TOKEN_INVALID )
{
}
SheetDataBuffer::MergedRange::MergedRange( const ScAddress& rAddress, sal_Int32 nHorAlign ) :
- maRange( rAddress.Tab(), rAddress.Col(), rAddress.Row(), rAddress.Col(), rAddress.Row() ),
+ maRange( rAddress, rAddress ),
mnHorAlign( nHorAlign )
{
}
bool SheetDataBuffer::MergedRange::tryExpand( const ScAddress& rAddress, sal_Int32 nHorAlign )
{
- if( (mnHorAlign == nHorAlign) && (maRange.StartRow == rAddress.Row() ) &&
- (maRange.EndRow == rAddress.Row() ) && (maRange.EndColumn + 1 == rAddress.Col() ) )
+ if( (mnHorAlign == nHorAlign) && (maRange.aStart.Row() == rAddress.Row() ) &&
+ (maRange.aEnd.Row() == rAddress.Row() ) && (maRange.aEnd.Col() + 1 == rAddress.Col() ) )
{
- ++maRange.EndColumn;
+ maRange.aEnd.IncCol();
return true;
}
return false;
@@ -714,7 +714,7 @@ void SheetDataBuffer::setCellFormat( const CellModel& rModel )
}
}
-void lcl_SetBorderLine( ScDocument& rDoc, ScRange& rRange, SCTAB nScTab, SvxBoxItemLine nLine )
+void lcl_SetBorderLine( ScDocument& rDoc, const ScRange& rRange, SCTAB nScTab, SvxBoxItemLine nLine )
{
SCCOL nFromScCol = (nLine == SvxBoxItemLine::RIGHT) ? rRange.aEnd.Col() : rRange.aStart.Col();
SCROW nFromScRow = (nLine == SvxBoxItemLine::BOTTOM) ? rRange.aEnd.Row() : rRange.aStart.Row();
@@ -729,22 +729,20 @@ void lcl_SetBorderLine( ScDocument& rDoc, ScRange& rRange, SCTAB nScTab, SvxBoxI
rDoc.ApplyAttr( rRange.aStart.Col(), rRange.aStart.Row(), nScTab, aNewItem );
}
-void SheetDataBuffer::applyCellMerging( const CellRangeAddress& rRange )
+void SheetDataBuffer::applyCellMerging( const ScRange& rRange )
{
- bool bMultiCol = rRange.StartColumn < rRange.EndColumn;
- bool bMultiRow = rRange.StartRow < rRange.EndRow;
+ bool bMultiCol = rRange.aStart.Col() < rRange.aEnd.Col();
+ bool bMultiRow = rRange.aStart.Row() < rRange.aEnd.Row();
- ScRange aRange;
- ScUnoConversion::FillScRange( aRange, rRange );
- const ScAddress& rStart = aRange.aStart;
- const ScAddress& rEnd = aRange.aEnd;
+ const ScAddress& rStart = rRange.aStart;
+ const ScAddress& rEnd = rRange.aEnd;
ScDocument& rDoc = getScDocument();
// set correct right border
if( bMultiCol )
- lcl_SetBorderLine( rDoc, aRange, getSheetIndex(), SvxBoxItemLine::RIGHT );
+ lcl_SetBorderLine( rDoc, rRange, getSheetIndex(), SvxBoxItemLine::RIGHT );
// set correct lower border
if( bMultiRow )
- lcl_SetBorderLine( rDoc, aRange, getSheetIndex(), SvxBoxItemLine::BOTTOM );
+ lcl_SetBorderLine( rDoc, rRange, getSheetIndex(), SvxBoxItemLine::BOTTOM );
// do merge
if( bMultiCol || bMultiRow )
rDoc.DoMerge( getSheetIndex(), rStart.Col(), rStart.Row(), rEnd.Col(), rEnd.Row() );
diff --git a/sc/source/filter/oox/worksheetfragment.cxx b/sc/source/filter/oox/worksheetfragment.cxx
index 4871671adf06..15b8a6183973 100644
--- a/sc/source/filter/oox/worksheetfragment.cxx
+++ b/sc/source/filter/oox/worksheetfragment.cxx
@@ -47,7 +47,6 @@
namespace oox {
namespace xls {
-using namespace ::com::sun::star::table;
using namespace ::com::sun::star::uno;
using namespace ::oox::core;
@@ -694,7 +693,7 @@ void WorksheetFragment::importCol( const AttributeList& rAttribs )
void WorksheetFragment::importMergeCell( const AttributeList& rAttribs )
{
- CellRangeAddress aRange;
+ ScRange aRange;
if( getAddressConverter().convertToCellRange( aRange, rAttribs.getString( XML_ref, OUString() ), getSheetIndex(), true, true ) )
getSheetData().setMergedRange( aRange );
}
@@ -825,7 +824,7 @@ void WorksheetFragment::importMergeCell( SequenceInputStream& rStrm )
{
BinRange aBinRange;
rStrm >> aBinRange;
- CellRangeAddress aRange;
+ ScRange aRange;
if( getAddressConverter().convertToCellRange( aRange, aBinRange, getSheetIndex(), true, true ) )
getSheetData().setMergedRange( aRange );
}