diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2019-04-30 16:45:54 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2019-06-19 12:39:47 +0200 |
commit | 7f0813c2c352529bfafd544edb260048e8828f03 (patch) | |
tree | 49141b3e7329812f7c5fe6412284bb305e952f75 /sc | |
parent | 149fac648bd78578c2e6a0275bf832053721dcd3 (diff) |
tdf#125046: export longText attribute for sharedItems element
Change-Id: Id727f10763bc5017eeb3e267b425d6013786d6a2
Reviewed-on: https://gerrit.libreoffice.org/71585
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/74349
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/qa/unit/data/xlsx/pivottable_long_text.xlsx | bin | 0 -> 13038 bytes | |||
-rw-r--r-- | sc/qa/unit/pivottable_filters_test.cxx | 14 | ||||
-rw-r--r-- | sc/source/filter/excel/xepivotxml.cxx | 11 |
3 files changed, 25 insertions, 0 deletions
diff --git a/sc/qa/unit/data/xlsx/pivottable_long_text.xlsx b/sc/qa/unit/data/xlsx/pivottable_long_text.xlsx Binary files differnew file mode 100644 index 000000000000..f56db722e915 --- /dev/null +++ b/sc/qa/unit/data/xlsx/pivottable_long_text.xlsx diff --git a/sc/qa/unit/pivottable_filters_test.cxx b/sc/qa/unit/pivottable_filters_test.cxx index 5e886036aecb..5570d9b1fc52 100644 --- a/sc/qa/unit/pivottable_filters_test.cxx +++ b/sc/qa/unit/pivottable_filters_test.cxx @@ -94,6 +94,7 @@ public: void tesTtdf124772NumFmt(); void testTdf124810(); void testTdf124883(); + void testTdf125046(); CPPUNIT_TEST_SUITE(ScPivotTableFiltersTest); @@ -142,6 +143,7 @@ public: CPPUNIT_TEST(tesTtdf124772NumFmt); CPPUNIT_TEST(testTdf124810); CPPUNIT_TEST(testTdf124883); + CPPUNIT_TEST(testTdf125046); CPPUNIT_TEST_SUITE_END(); @@ -2621,6 +2623,18 @@ void ScPivotTableFiltersTest::testTdf124883() "Count of Value2"); } +void ScPivotTableFiltersTest::testTdf125046() +{ + ScDocShellRef xDocSh = loadDoc("pivottable_long_text.", FORMAT_XLSX); + CPPUNIT_ASSERT(xDocSh.is()); + + xmlDocPtr pDoc = XPathHelper::parseExport2( + *this, *xDocSh, m_xSFactory, "xl/pivotCache/pivotCacheDefinition1.xml", FORMAT_XLSX); + CPPUNIT_ASSERT(pDoc); + assertXPath(pDoc, "/x:pivotCacheDefinition/x:cacheFields/x:cacheField[2]/x:sharedItems", + "longText", "1"); +} + CPPUNIT_TEST_SUITE_REGISTRATION(ScPivotTableFiltersTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sc/source/filter/excel/xepivotxml.cxx b/sc/source/filter/excel/xepivotxml.cxx index e3b39e0dafe9..147658d8fafc 100644 --- a/sc/source/filter/excel/xepivotxml.cxx +++ b/sc/source/filter/excel/xepivotxml.cxx @@ -363,6 +363,7 @@ void XclExpXmlPivotCaches::SavePivotCacheXml( XclExpXmlStream& rStrm, const Entr double fMin = std::numeric_limits<double>::infinity(), fMax = -std::numeric_limits<double>::infinity(); bool isValueInteger = true; bool isContainsDate = rCache.IsDateDimension(i); + bool isLongText = false; for (; it != itEnd; ++it) { ScDPItemData::Type eType = it->GetType(); @@ -382,6 +383,10 @@ void XclExpXmlPivotCaches::SavePivotCacheXml( XclExpXmlStream& rStrm, const Entr isValueInteger = false; } } + else if (eType == ScDPItemData::String && !isLongText) + { + isLongText = it->GetString().getLength() > 255; + } } auto aDPTypeEnd = aDPTypes.cend(); @@ -459,6 +464,12 @@ void XclExpXmlPivotCaches::SavePivotCacheXml( XclExpXmlStream& rStrm, const Entr { pAttList->add(XML_count, OString::number(static_cast<long>(rFieldItems.size()))); } + + if (isLongText) + { + pAttList->add(XML_longText, ToPsz10(true)); + } + sax_fastparser::XFastAttributeListRef xAttributeList(pAttList); pDefStrm->startElement(XML_sharedItems, xAttributeList); |