tdf#134817 XLSX export: fix partially lost header/footer
When header/footer text contain text portions with different
font setting, only the last text portion was exported.
Co-authored-by: Tibor Nagy (NISZ)
Change-Id: Id4cba2b9188459cdaa0ade30c2217d8f59fe6316
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98938
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
Signed-off-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99788
Tested-by: Jenkins
Reviewed-by: Attila Szűcs <szucs.attila3@nisz.hu>
diff --git a/sc/qa/unit/data/xlsx/tdf134817_HeaderFooterTextWith2Section.xlsx b/sc/qa/unit/data/xlsx/tdf134817_HeaderFooterTextWith2Section.xlsx
new file mode 100644
index 0000000..224ac8d
--- /dev/null
+++ b/sc/qa/unit/data/xlsx/tdf134817_HeaderFooterTextWith2Section.xlsx
Binary files differ
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 096c95e..d74d4d6 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -249,6 +249,7 @@ public:
void testTdf131372();
void testTdf122331();
void testTdf83779();
void testTdf134817_HeaderFooterTextWith2SectionXLSX();
CPPUNIT_TEST_SUITE(ScExportTest);
CPPUNIT_TEST(test);
@@ -396,6 +397,7 @@ public:
CPPUNIT_TEST(testTdf131372);
CPPUNIT_TEST(testTdf122331);
CPPUNIT_TEST(testTdf83779);
CPPUNIT_TEST(testTdf134817_HeaderFooterTextWith2SectionXLSX);
CPPUNIT_TEST_SUITE_END();
@@ -5081,6 +5083,24 @@ void ScExportTest::testTdf83779()
xShell->DoClose();
}
void ScExportTest::testTdf134817_HeaderFooterTextWith2SectionXLSX()
{
// Header/footer text with multiple selection should be exported, and imported properly
ScDocShellRef xShell = loadDoc("tdf134817_HeaderFooterTextWith2Section.", FORMAT_XLSX);
CPPUNIT_ASSERT(xShell.is());
ScDocShellRef xDocSh = saveAndReload(&(*xShell), FORMAT_XLSX);
CPPUNIT_ASSERT(xDocSh.is());
xmlDocUniquePtr pDoc = XPathHelper::parseExport2(*this, *xDocSh, m_xSFactory, "xl/worksheets/sheet1.xml", FORMAT_XLSX);
CPPUNIT_ASSERT(pDoc);
assertXPathContent(pDoc, "/x:worksheet/x:headerFooter/x:oddHeader", "&L&\"Abadi,Regular\"&11aaa&\"Bembo,Regular\"&20bbb");
assertXPathContent(pDoc, "/x:worksheet/x:headerFooter/x:oddFooter", "&R&\"Cambria,Regular\"&14camb&\"Dante,Regular\"&18dant");
xDocSh->DoClose();
}
CPPUNIT_TEST_SUITE_REGISTRATION(ScExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sc/source/filter/excel/xehelper.cxx b/sc/source/filter/excel/xehelper.cxx
index 6584c31..88dcabe 100644
--- a/sc/source/filter/excel/xehelper.cxx
+++ b/sc/source/filter/excel/xehelper.cxx
@@ -739,7 +739,7 @@ void XclExpHFConverter::AppendPortion( const EditTextObject* pTextObj, sal_Unico
(aFontData.mbItalic != aNewData.mbItalic);
if( bNewFont || (bNewStyle && pFontList) )
{
aParaText = "&\"" + aNewData.maName;
aParaText.append("&\"").append(aNewData.maName);
if( pFontList )
{
FontMetric aFontMetric( pFontList->Get(