Kaydet (Commit) c06b24dc authored tarafından Eike Rathke's avatar Eike Rathke

Resolves: tdf#96072 export Chart format codes in Excel notation

As for the change in chart2/qa/extras/chart2export.cxx
Chart2ExportTest::testAxisNumberFormatXLSX() unit test: also Excel
writes string parts of format codes quoted, including minus sign in
negative subformat.

Change-Id: I201bb012df818129cbc65de0eee8eca59e57d829
(cherry picked from commit 509cfa40)
üst 34d043b2
......@@ -1281,7 +1281,7 @@ void Chart2ExportTest::testAxisNumberFormatXLSX()
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[1]/c:numFmt", "formatCode", "0.00E+000");
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[1]/c:numFmt", "sourceLinked", "0");
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[2]/c:numFmt", "formatCode", "[$$-409]#,##0;-[$$-409]#,##0");
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[2]/c:numFmt", "formatCode", "[$$-409]#,##0;\\-[$$-409]#,##0");
assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:plotArea/c:valAx[2]/c:numFmt", "sourceLinked", "1");
}
......
......@@ -90,6 +90,10 @@
#include <comphelper/sequence.hxx>
#include <xmloff/SchXMLSeriesHelper.hxx>
#include "ColorPropertySet.hxx"
#include <svl/zforlist.hxx>
#include <svl/numuno.hxx>
#include <set>
#include <unordered_set>
......@@ -3753,17 +3757,26 @@ bool ChartExport::isDeep3dChart()
OUString ChartExport::getNumberFormatCode(sal_Int32 nKey) const
{
/* XXX if this was called more than one or two times per export the two
* SvNumberFormatter instances and NfKeywordTable should be member
* variables and initialized only once. */
OUString aCode("General"); // init with fallback
uno::Reference<util::XNumberFormatsSupplier> xNumberFormatsSupplier(mxChartModel, uno::UNO_QUERY_THROW);
uno::Reference<util::XNumberFormats> xNumberFormats = xNumberFormatsSupplier->getNumberFormats();
uno::Reference<beans::XPropertySet> xNumberFormat = xNumberFormats->getByKey(nKey);
SvNumberFormatsSupplierObj* pSupplierObj = SvNumberFormatsSupplierObj::getImplementation( xNumberFormatsSupplier);
if (!pSupplierObj)
return aCode;
SvNumberFormatter* pNumberFormatter = pSupplierObj->GetNumberFormatter();
if (!pNumberFormatter)
return aCode;
if (!xNumberFormat.is())
return OUString();
SvNumberFormatter aTempFormatter( comphelper::getProcessComponentContext(), LANGUAGE_ENGLISH_US);
NfKeywordTable aKeywords;
aTempFormatter.FillKeywordTableForExcel( aKeywords);
aCode = pNumberFormatter->GetFormatStringForExcel( nKey, aKeywords, aTempFormatter);
uno::Any aAny = xNumberFormat->getPropertyValue("FormatString");
OUString aValue;
aAny >>= aValue;
return aValue;
return aCode;
}
}// drawingml
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment