sc/source/filter/excel/xetable.cxx | 14 +++++++++++--- sc/source/filter/inc/xetable.hxx | 3 ++- sc/source/filter/oox/unitconverter.cxx | 5 ++--- 3 files changed, 15 insertions(+), 7 deletions(-)
New commits: commit f08e1ac6c0998e36359cc08e590ee6e8dfab3599 Author: Noel Power <noel.po...@suse.com> Date: Thu Oct 4 15:45:36 2012 +0100 xlsx fix import/export of column widths fdo#55623 column widths were never imported or exported correctly in xlsx. Change-Id: I92d469ce52495fe77281cb22341e9c5127e6b506 diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx index 793155a..98f8cb5 100644 --- a/sc/source/filter/excel/xetable.cxx +++ b/sc/source/filter/excel/xetable.cxx @@ -1482,8 +1482,9 @@ XclExpColinfo::XclExpColinfo( const XclExpRoot& rRoot, SCCOL nScCol, SCROW nLastScRow, XclExpColOutlineBuffer& rOutlineBfr ) : XclExpRecord( EXC_ID_COLINFO, 12 ), XclExpRoot( rRoot ), - mnWidth( 0 ), mnFlags( 0 ), + mnWidth( 0 ), + mnScWidth( 0 ), mnFirstXclCol( static_cast< sal_uInt16 >( nScCol ) ), mnLastXclCol( static_cast< sal_uInt16 >( nScCol ) ) { @@ -1497,7 +1498,7 @@ XclExpColinfo::XclExpColinfo( const XclExpRoot& rRoot, // column width sal_uInt16 nScWidth = rDoc.GetColWidth( nScCol, nScTab ); mnWidth = XclTools::GetXclColumnWidth( nScWidth, GetCharWidth() ); - + mnScWidth = sc::TwipsToHMM( nScWidth ); // column flags ::set_flag( mnFlags, EXC_COLINFO_HIDDEN, rDoc.ColHidden(nScCol, nScTab) ); @@ -1563,7 +1564,7 @@ void XclExpColinfo::SaveXml( XclExpXmlStream& rStrm ) // OOXTODO: XML_outlineLevel, // OOXTODO: XML_phonetic, XML_style, lcl_GetStyleId( rStrm, maXFId.mnXFIndex ).getStr(), - XML_width, OString::valueOf( (double) (mnWidth / 255.0) ).getStr(), + XML_width, OString::valueOf( (double) (mnScWidth / (double)sc::TwipsToHMM( GetCharWidth() )) ).getStr(), FSEND ); } diff --git a/sc/source/filter/inc/xetable.hxx b/sc/source/filter/inc/xetable.hxx index 291c37f..d9ce5ea 100644 --- a/sc/source/filter/inc/xetable.hxx +++ b/sc/source/filter/inc/xetable.hxx @@ -783,6 +783,7 @@ private: private: XclExpXFId maXFId; /// The XF identifier for column default format. sal_uInt16 mnWidth; /// Excel width of the column. + sal_uInt16 mnScWidth; /// Calc width of the column. sal_uInt16 mnFlags; /// Additional column flags. sal_uInt16 mnFirstXclCol; /// Index to first column. sal_uInt16 mnLastXclCol; /// Index to last column. diff --git a/sc/source/filter/oox/unitconverter.cxx b/sc/source/filter/oox/unitconverter.cxx index e2feb87..2d0431b 100644 --- a/sc/source/filter/oox/unitconverter.cxx +++ b/sc/source/filter/oox/unitconverter.cxx @@ -149,18 +149,17 @@ void UnitConverter::finalizeImport() { // XDevice expects pixels in font descriptor, but font contains twips FontDescriptor aDesc = pDefFont->getFontDescriptor(); - aDesc.Height = static_cast< sal_Int16 >( scaleValue( aDesc.Height, UNIT_TWIP, UNIT_REFDEVX ) + 0.5 ); Reference< XFont > xFont = xDevice->getFont( aDesc ); if( xFont.is() ) { // get maximum width of all digits sal_Int32 nDigitWidth = 0; for( sal_Unicode cChar = '0'; cChar <= '9'; ++cChar ) - nDigitWidth = ::std::max( nDigitWidth, scaleToMm100( xFont->getCharWidth( cChar ), UNIT_REFDEVX ) ); + nDigitWidth = ::std::max( nDigitWidth, scaleToMm100( xFont->getCharWidth( cChar ), UNIT_TWIP ) ); if( nDigitWidth > 0 ) maCoeffs[ UNIT_DIGIT ] = nDigitWidth; // get width of space character - sal_Int32 nSpaceWidth = scaleToMm100( xFont->getCharWidth( ' ' ), UNIT_REFDEVX ); + sal_Int32 nSpaceWidth = scaleToMm100( xFont->getCharWidth( ' ' ), UNIT_TWIP ); if( nSpaceWidth > 0 ) maCoeffs[ UNIT_SPACE ] = nSpaceWidth; } commit 6b686a18539b384d032358879bd06d2def280842 Author: Noel Power <noel.po...@suse.com> Date: Thu Oct 4 14:00:47 2012 +0100 really export default row heights for xlsx fdo#55621 Change-Id: I81173507b30fc260043e6c57c123926a17424797 diff --git a/sc/source/filter/excel/xetable.cxx b/sc/source/filter/excel/xetable.cxx index e3967f2..793155a 100644 --- a/sc/source/filter/excel/xetable.cxx +++ b/sc/source/filter/excel/xetable.cxx @@ -2434,6 +2434,13 @@ void XclExpCellTable::Save( XclExpStream& rStrm ) void XclExpCellTable::SaveXml( XclExpXmlStream& rStrm ) { + // DEFAULT row height + XclExpDefaultRowData& rDefData = mxDefrowheight->GetDefaultData(); + sax_fastparser::FSHelperPtr& rWorksheet = rStrm.GetCurrentStream(); + rWorksheet->startElement( XML_sheetFormatPr, + XML_defaultRowHeight, OString::valueOf( (double) rDefData.mnHeight / 20.0 ).getStr(), FSEND ); + rWorksheet->endElement( XML_sheetFormatPr ); + maColInfoBfr.SaveXml( rStrm ); maRowBfr.SaveXml( rStrm ); } diff --git a/sc/source/filter/inc/xetable.hxx b/sc/source/filter/inc/xetable.hxx index 33b7b2c..291c37f 100644 --- a/sc/source/filter/inc/xetable.hxx +++ b/sc/source/filter/inc/xetable.hxx @@ -851,7 +851,7 @@ public: /** Sets the passed default data as current record contents. */ void SetDefaultData( const XclExpDefaultRowData& rDefData ); - + XclExpDefaultRowData& GetDefaultData() { return maDefData; } private: /** Writes the contents of the record. */ virtual void WriteBody( XclExpStream& rStrm ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits