summaryrefslogtreecommitdiff
path: root/sc/source/filter/oox/sheetdatabuffer.cxx
diff options
context:
space:
mode:
authorMohammed Abdul Azeem <azeemmysore@gmail.com>2016-02-09 03:54:15 +0530
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-02-17 08:41:12 +0000
commit2c02986b76f26d6f09d5b1f9d209879bfa427ea1 (patch)
tree60cb199d609d1b8f5f36ddfdefcc25bdd1065556 /sc/source/filter/oox/sheetdatabuffer.cxx
parente327587699ed9e071da68bf7b2a3eb62c34af135 (diff)
tdf#97654 - replaced UNO cell types in xlsx import with calc internal ones
All reference to CellAddress in ApiCellRangeList::getBaseAddress() is changed to ScAddress and its chain of changes has been made. Change-Id: I43d9eb8dc02c74640d9fac11a44429850f31ade1 Reviewed-on: https://gerrit.libreoffice.org/22222 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sc/source/filter/oox/sheetdatabuffer.cxx')
-rw-r--r--sc/source/filter/oox/sheetdatabuffer.cxx61
1 files changed, 55 insertions, 6 deletions
diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx
index f6f7fb70a200..f6765b4d5b72 100644
--- a/sc/source/filter/oox/sheetdatabuffer.cxx
+++ b/sc/source/filter/oox/sheetdatabuffer.cxx
@@ -95,6 +95,14 @@ bool CellFormulaModel::isValidSharedRef( const CellAddress& rCellAddr )
(maFormulaRef.StartRow <= rCellAddr.Row) && (rCellAddr.Row <= maFormulaRef.EndRow);
}
+bool CellFormulaModel::isValidSharedRef( const ScAddress& rCellAddr )
+{
+ return
+ (maFormulaRef.Sheet == rCellAddr.Tab() ) &&
+ (maFormulaRef.StartColumn <= rCellAddr.Col() ) && (rCellAddr.Col() <= maFormulaRef.EndColumn) &&
+ (maFormulaRef.StartRow <= rCellAddr.Row() ) && (rCellAddr.Row() <= maFormulaRef.EndRow);
+}
+
DataTableModel::DataTableModel() :
mb2dTable( false ),
mbRowTable( false ),
@@ -256,7 +264,7 @@ void SheetDataBuffer::setFormulaCell( const CellModel& rModel, const ApiTokenSeq
aTokens = resolveSharedFormula( aTokenInfo.First );
if( !aTokens.hasElements() )
{
- maSharedFmlaAddr = rModel.maCellAddr;
+ maSharedFmlaAddr = ( CellAddress( rModel.maCellAddr.Tab(), rModel.maCellAddr.Col(), rModel.maCellAddr.Row() ) ); //should change this later
maSharedBaseAddr = aTokenInfo.First;
mbPendingSharedFmla = true;
}
@@ -329,6 +337,21 @@ void SheetDataBuffer::setStandardNumFmt( const CellAddress& rCellAddr, sal_Int16
}
}
+void SheetDataBuffer::setStandardNumFmt( const ScAddress& rCellAddr, sal_Int16 nStdNumFmt )
+{
+ try
+ {
+ Reference< XNumberFormatsSupplier > xNumFmtsSupp( getDocument(), UNO_QUERY_THROW );
+ Reference< XNumberFormatTypes > xNumFmtTypes( xNumFmtsSupp->getNumberFormats(), UNO_QUERY_THROW );
+ sal_Int32 nIndex = xNumFmtTypes->getStandardFormat( nStdNumFmt, Locale() );
+ PropertySet aPropSet( getCell( rCellAddr ) );
+ aPropSet.setProperty( PROP_NumberFormat, nIndex );
+ }
+ catch( Exception& )
+ {
+ }
+}
+
typedef std::pair<sal_Int32, sal_Int32> FormatKeyPair;
void addIfNotInMyMap( StylesBuffer& rStyles, std::map< FormatKeyPair, ApiCellRangeList >& rMap, sal_Int32 nXfId, sal_Int32 nFormatId, const ApiCellRangeList& rRangeList )
@@ -544,6 +567,12 @@ SheetDataBuffer::MergedRange::MergedRange( const CellAddress& rAddress, sal_Int3
{
}
+SheetDataBuffer::MergedRange::MergedRange( const ScAddress& rAddress, sal_Int32 nHorAlign ) :
+ maRange( rAddress.Tab(), rAddress.Col(), rAddress.Row(), rAddress.Col(), rAddress.Row() ),
+ mnHorAlign( nHorAlign )
+{
+}
+
bool SheetDataBuffer::MergedRange::tryExpand( const CellAddress& rAddress, sal_Int32 nHorAlign )
{
if( (mnHorAlign == nHorAlign) && (maRange.StartRow == rAddress.Row) &&
@@ -555,6 +584,17 @@ bool SheetDataBuffer::MergedRange::tryExpand( const CellAddress& rAddress, sal_I
return false;
}
+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() ) )
+ {
+ ++maRange.EndColumn;
+ return true;
+ }
+ return false;
+}
+
void SheetDataBuffer::setCellFormula( const CellAddress& rCellAddr, const ApiTokenSequence& rTokens )
{
if( rTokens.hasElements() )
@@ -563,6 +603,15 @@ void SheetDataBuffer::setCellFormula( const CellAddress& rCellAddr, const ApiTok
}
}
+void SheetDataBuffer::setCellFormula( const ScAddress& rCellAddr, const ApiTokenSequence& rTokens )
+{
+ if( rTokens.hasElements() )
+ {
+ putFormulaTokens( rCellAddr, rTokens );
+ }
+}
+
+
ApiTokenSequence SheetDataBuffer::resolveSharedFormula( const CellAddress& rAddr ) const
{
BinAddress aAddr(rAddr);
@@ -664,18 +713,18 @@ void SheetDataBuffer::setCellFormat( const CellModel& rModel, sal_Int32 nNumFmtI
* It is sufficient to check if the row range size is one
*/
if( aIt != aItEnd &&
- aIt->Sheet == rModel.maCellAddr.Sheet &&
+ aIt->Sheet == rModel.maCellAddr.Tab() &&
aIt->StartRow == aIt->EndRow &&
- aIt->StartRow == rModel.maCellAddr.Row &&
- (aIt->EndColumn+1) == rModel.maCellAddr.Column )
+ aIt->StartRow == rModel.maCellAddr.Row() &&
+ (aIt->EndColumn+1) == rModel.maCellAddr.Col() )
{
aIt->EndColumn++; // Expand Column
}
else
{
maXfIdRangeLists[ XfIdNumFmtKey (rModel.mnXfId, nNumFmtId ) ].push_back(
- CellRangeAddress( rModel.maCellAddr.Sheet, rModel.maCellAddr.Column, rModel.maCellAddr.Row,
- rModel.maCellAddr.Column, rModel.maCellAddr.Row ) );
+ CellRangeAddress( rModel.maCellAddr.Tab(), rModel.maCellAddr.Col(), rModel.maCellAddr.Row(),
+ rModel.maCellAddr.Col(), rModel.maCellAddr.Row() ) );
}
aIt = maXfIdRangeLists[ XfIdNumFmtKey( rModel.mnXfId, nNumFmtId ) ].rbegin();