diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-08-29 16:23:57 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-08-29 18:24:31 -0400 |
commit | bfaf4401b440b56d6e226a4dca32a18e84949d52 (patch) | |
tree | 4685a14ac10031339f09bf9da2dae2fd89039a24 | |
parent | 5c004922b2fc167c826350085f7d996d93b4398e (diff) |
Export data layout field to xlsx correctly.
Excel uses a field index of -2 to indicate a data layout field.
Change-Id: I6b18c0bcff439eb4425ef0b0d0b841633dc81dd7
-rw-r--r-- | sc/source/filter/excel/xepivotxml.cxx | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/sc/source/filter/excel/xepivotxml.cxx b/sc/source/filter/excel/xepivotxml.cxx index cef5a853ecfe..5ff871a517a6 100644 --- a/sc/source/filter/excel/xepivotxml.cxx +++ b/sc/source/filter/excel/xepivotxml.cxx @@ -395,16 +395,21 @@ void XclExpXmlPivotTables::SavePivotTableXml( XclExpXmlStream& rStrm, const ScDP const ScDPSaveDimension& rDim = rDims[i]; long nPos = -1; // position in cache - OUString aSrcName = ScDPUtil::getSourceDimensionName(rDim.GetName()); - NameToIdMapType::iterator it = aNameToIdMap.find(aSrcName); - if (it != aNameToIdMap.end()) - nPos = it->second; + if (rDim.IsDataLayout()) + nPos = -2; // Excel uses an index of -2 to indicate a data layout field. + else + { + OUString aSrcName = ScDPUtil::getSourceDimensionName(rDim.GetName()); + NameToIdMapType::iterator it = aNameToIdMap.find(aSrcName); + if (it != aNameToIdMap.end()) + nPos = it->second; - if (nPos == -1) - continue; + if (nPos == -1) + continue; - if (!aCachedDims[nPos]) - continue; + if (!aCachedDims[nPos]) + continue; + } sheet::DataPilotFieldOrientation eOrient = static_cast<sheet::DataPilotFieldOrientation>(rDim.GetOrientation()); |