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

Reply via email to