sc/source/filter/excel/xetable.cxx           |   46 +++++++++++++++++++++++++--
 sc/source/filter/inc/xetable.hxx             |    3 +
 xmloff/source/chart/XMLChartStyleContext.cxx |   14 ++------
 3 files changed, 50 insertions(+), 13 deletions(-)

New commits:
commit 93a5b7ee36818d60963e4fbe21f9e6c43c7c5a80
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Tue Jul 2 02:37:58 2013 +0200

    don't forget the formula cell style during xls/xlsx export, fdo#66242
    
    This reverts parts of commit 64223bda068cc6d82d3c5e359d465014568398bb.
    
    Change-Id: I6d5379aaedbf011b39a4cf076f0a43bc8a6cbc93

diff --git a/sc/source/filter/excel/xetable.cxx 
b/sc/source/filter/excel/xetable.cxx
index 39f2e03..8694a49 100644
--- a/sc/source/filter/excel/xetable.cxx
+++ b/sc/source/filter/excel/xetable.cxx
@@ -760,13 +760,55 @@ IMPL_FIXEDMEMPOOL_NEWDEL( XclExpFormulaCell )
 
 XclExpFormulaCell::XclExpFormulaCell(
         const XclExpRoot& rRoot, const XclAddress& rXclPos,
-        sal_uInt32 nForcedXFId, const ScFormulaCell& rScFmlaCell,
+        const ScPatternAttr* pPattern, sal_uInt32 nForcedXFId,
+        const ScFormulaCell& rScFmlaCell,
         XclExpArrayBuffer& rArrayBfr,
         XclExpShrfmlaBuffer& rShrfmlaBfr,
         XclExpTableopBuffer& rTableopBfr ) :
     XclExpSingleCellBase( EXC_ID2_FORMULA, 0, rXclPos, nForcedXFId ),
     mrScFmlaCell( const_cast< ScFormulaCell& >( rScFmlaCell ) )
 {
+    // *** Find result number format overwriting cell number format *** -------
+
+    if( GetXFId() == EXC_XFID_NOTFOUND )
+    {
+        SvNumberFormatter& rFormatter = rRoot.GetFormatter();
+        XclExpNumFmtBuffer& rNumFmtBfr = rRoot.GetNumFmtBuffer();
+
+        // current cell number format
+        sal_uLong nScNumFmt = pPattern ?
+            GETITEMVALUE( pPattern->GetItemSet(), SfxUInt32Item, 
ATTR_VALUE_FORMAT, sal_uLong ) :
+            rNumFmtBfr.GetStandardFormat();
+
+        // alternative number format passed to XF buffer
+        sal_uLong nAltScNumFmt = NUMBERFORMAT_ENTRY_NOT_FOUND;
+        /*  Xcl doesn't know Boolean number formats, we write
+            "TRUE";"FALSE" (language dependent). Don't do it for automatic
+            formula formats, because Excel gets them right. */
+        /*  #i8640# Don't set text format, if we have string results. */
+        short nFormatType = mrScFmlaCell.GetFormatType();
+        if( ((nScNumFmt % SV_COUNTRY_LANGUAGE_OFFSET) == 0) &&
+                (nFormatType != NUMBERFORMAT_LOGICAL) &&
+                (nFormatType != NUMBERFORMAT_TEXT) )
+            nAltScNumFmt = nScNumFmt;
+        /*  If cell number format is Boolean and automatic formula
+            format is Boolean don't write that ugly special format. */
+        else if( (nFormatType == NUMBERFORMAT_LOGICAL) &&
+                (rFormatter.GetType( nScNumFmt ) == NUMBERFORMAT_LOGICAL) )
+            nAltScNumFmt = rNumFmtBfr.GetStandardFormat();
+
+        // #i41420# find script type according to result type (always latin 
for numeric results)
+        sal_Int16 nScript = ApiScriptType::LATIN;
+        bool bForceLineBreak = false;
+        if( nFormatType == NUMBERFORMAT_TEXT )
+        {
+            String aResult = mrScFmlaCell.GetString();
+            bForceLineBreak = mrScFmlaCell.IsMultilineResult();
+            nScript = XclExpStringHelper::GetLeadingScriptType( rRoot, aResult 
);
+        }
+        SetXFId( rRoot.GetXFBuffer().InsertWithNumFmt( pPattern, nScript, 
nAltScNumFmt, bForceLineBreak ) );
+    }
+
     // *** Convert the formula token array *** --------------------------------
 
     ScAddress aScPos( static_cast< SCCOL >( rXclPos.mnCol ), static_cast< 
SCROW >( rXclPos.mnRow ), rRoot.GetCurrScTab() );
@@ -2336,7 +2378,7 @@ XclExpCellTable::XclExpCellTable( const XclExpRoot& rRoot 
) :
             case CELLTYPE_FORMULA:
             {
                 xCell.reset(new XclExpFormulaCell(
-                    GetRoot(), aXclPos, nMergeBaseXFId,
+                    GetRoot(), aXclPos, pPattern, nMergeBaseXFId,
                     *rScCell.mpFormula, maArrayBfr, maShrfmlaBfr, 
maTableopBfr));
             }
             break;
diff --git a/sc/source/filter/inc/xetable.hxx b/sc/source/filter/inc/xetable.hxx
index b0253b3..655d6ea 100644
--- a/sc/source/filter/inc/xetable.hxx
+++ b/sc/source/filter/inc/xetable.hxx
@@ -451,7 +451,8 @@ class XclExpFormulaCell : public XclExpSingleCellBase
 
 public:
     explicit            XclExpFormulaCell( const XclExpRoot& rRoot, const 
XclAddress& rXclPos,
-                            sal_uInt32 nForcedXFId, const ScFormulaCell& 
rScFmlaCell,
+                            const ScPatternAttr* pPattern, sal_uInt32 
nForcedXFId,
+                            const ScFormulaCell& rScFmlaCell,
                             XclExpArrayBuffer& rArrayBfr,
                             XclExpShrfmlaBuffer& rShrfmlaBfr,
                             XclExpTableopBuffer& rTableopBfr );
commit ae4e42c87f10eda7efd74cb250253a4f6815d427
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Sun Jun 30 05:56:31 2013 +0200

    remove unnecessary comments
    
    Change-Id: Iff6c1c59d0300f868972c2abf88fee5cf7e5372a

diff --git a/xmloff/source/chart/XMLChartStyleContext.cxx 
b/xmloff/source/chart/XMLChartStyleContext.cxx
index 27ac66b..52dc38a 100644
--- a/xmloff/source/chart/XMLChartStyleContext.cxx
+++ b/xmloff/source/chart/XMLChartStyleContext.cxx
@@ -37,8 +37,6 @@ using ::xmloff::token::XML_CHART_PROPERTIES;
 
 TYPEINIT1( XMLChartStyleContext, XMLPropStyleContext );
 
-// protected
-
 void XMLChartStyleContext::SetAttribute(
     sal_uInt16 nPrefixKey,
     const OUString& rLocalName,
@@ -58,9 +56,6 @@ void XMLChartStyleContext::SetAttribute(
     }
 }
 
-//public
-
-// CTOR
 XMLChartStyleContext::XMLChartStyleContext(
     SvXMLImport& rImport, sal_uInt16 nPrfx,
     const OUString& rLName,
@@ -71,7 +66,6 @@ XMLChartStyleContext::XMLChartStyleContext(
         mrStyles( rStyles )
 {}
 
-// DTOR
 XMLChartStyleContext::~XMLChartStyleContext()
 {}
 
@@ -96,7 +90,7 @@ void lcl_NumberFormatStyleToProperty( const OUString& 
rStyleName, const OUString
     }
 }
 
-}// anonymous namespace
+}
 
 void XMLChartStyleContext::FillPropertySet(
     const uno::Reference< beans::XPropertySet > & rPropSet )
commit 2c3b138a801437e801241039fa34f5f17646ecfe
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Sun Jun 30 05:55:16 2013 +0200

    fix indentation
    
    Change-Id: I1bdd8980109b340765c0600f897ff14e75fb0bae

diff --git a/xmloff/source/chart/XMLChartStyleContext.cxx 
b/xmloff/source/chart/XMLChartStyleContext.cxx
index b8246c7..27ac66b 100644
--- a/xmloff/source/chart/XMLChartStyleContext.cxx
+++ b/xmloff/source/chart/XMLChartStyleContext.cxx
@@ -78,9 +78,9 @@ XMLChartStyleContext::~XMLChartStyleContext()
 namespace
 {
 
-    void lcl_NumberFormatStyleToProperty( const OUString& rStyleName, const 
OUString& rPropertyName,
-                                      const SvXMLStylesContext& rStylesContext,
-                                      const uno::Reference< 
beans::XPropertySet >& rPropSet )
+void lcl_NumberFormatStyleToProperty( const OUString& rStyleName, const 
OUString& rPropertyName,
+        const SvXMLStylesContext& rStylesContext,
+        const uno::Reference< beans::XPropertySet >& rPropSet )
 {
     if( !rStyleName.isEmpty())
     {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to