summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-08-29 16:23:57 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-08-29 18:24:31 -0400
commitbfaf4401b440b56d6e226a4dca32a18e84949d52 (patch)
tree4685a14ac10031339f09bf9da2dae2fd89039a24
parent5c004922b2fc167c826350085f7d996d93b4398e (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.cxx21
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());