sc/qa/unit/data/ods/tdf143220.ods |binary sc/qa/unit/subsequent_export-test2.cxx | 14 ++++++++++---- sc/source/filter/excel/xecontent.cxx | 6 +++++- 3 files changed, 15 insertions(+), 5 deletions(-)
New commits: commit 0d2bcb7062fe9df5dabd69f6623d21ad4f1b954f Author: Tünde Tóth <toth.tu...@nisz.hu> AuthorDate: Tue Oct 19 14:15:37 2021 +0200 Commit: Tünde Tóth <toth.tu...@nisz.hu> CommitDate: Thu Nov 4 10:53:18 2021 +0100 tdf#145079 XLSX export: fix regression of internal hyperlinks Hyperlinks with internal named range targets didn't work. Regression from commit 3c3b9ad8886da916027f0fb940a2df822d63d4d7 (tdf#143220 XLSX export: fix hyperlink to sheet target) Note: original test case of the unit test document of tdf#143220 wasn't changed. It's only extended with two new test cases for verifying the fix for the regression. Change-Id: I8128ebb977dba7304bc9c69e45f6c55c71f800cf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123816 Tested-by: László Németh <nem...@numbertext.org> Reviewed-by: László Németh <nem...@numbertext.org> (cherry picked from commit 85a86ba6ba34ff0dfc92c3ce38cba86daf547121) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124687 Tested-by: Jenkins Reviewed-by: Tünde Tóth <toth.tu...@nisz.hu> diff --git a/sc/qa/unit/data/ods/tdf143220.ods b/sc/qa/unit/data/ods/tdf143220.ods index 6aa1536eae8e..281c25626ed5 100644 Binary files a/sc/qa/unit/data/ods/tdf143220.ods and b/sc/qa/unit/data/ods/tdf143220.ods differ diff --git a/sc/qa/unit/subsequent_export-test2.cxx b/sc/qa/unit/subsequent_export-test2.cxx index 361ab683a7f3..2a3a1de1b6f7 100644 --- a/sc/qa/unit/subsequent_export-test2.cxx +++ b/sc/qa/unit/subsequent_export-test2.cxx @@ -198,7 +198,7 @@ public: void testTdf142854_GridVisibilityImportXlsxInHeadlessMode(); void testTdf140431(); void testTdf142929_filterLessThanXLSX(); - void testTdf143220XLSX(); + void testHyperlinkLocationXLSX(); void testTdf142264ManyChartsToXLSX(); void testTdf143929MultiColumnToODS(); void testTdf142578(); @@ -302,7 +302,7 @@ public: CPPUNIT_TEST(testTdf142854_GridVisibilityImportXlsxInHeadlessMode); CPPUNIT_TEST(testTdf140431); CPPUNIT_TEST(testTdf142929_filterLessThanXLSX); - CPPUNIT_TEST(testTdf143220XLSX); + CPPUNIT_TEST(testHyperlinkLocationXLSX); CPPUNIT_TEST(testTdf142264ManyChartsToXLSX); CPPUNIT_TEST(testTdf143929MultiColumnToODS); CPPUNIT_TEST(testTdf142578); @@ -2464,7 +2464,7 @@ void ScExportTest2::testTdf142929_filterLessThanXLSX() xDocSh->DoClose(); } -void ScExportTest2::testTdf143220XLSX() +void ScExportTest2::testHyperlinkLocationXLSX() { ScDocShellRef xDocSh = loadDoc(u"tdf143220.", FORMAT_ODS); CPPUNIT_ASSERT(xDocSh.is()); @@ -2472,7 +2472,13 @@ void ScExportTest2::testTdf143220XLSX() xmlDocUniquePtr pDoc = XPathHelper::parseExport2(*this, *xDocSh, m_xSFactory, "xl/worksheets/sheet1.xml", FORMAT_XLSX); CPPUNIT_ASSERT(pDoc); - assertXPath(pDoc, "/x:worksheet/x:hyperlinks/x:hyperlink", "location", "Sheet2!A1"); + + // tdf#143220 link to sheet not valid without cell reference + assertXPath(pDoc, "/x:worksheet/x:hyperlinks/x:hyperlink[@ref='A1']", "location", "Sheet2!A1"); + + // tdf#145079 link with defined name target didn't work because Calc added "A1" at the end + assertXPath(pDoc, "/x:worksheet/x:hyperlinks/x:hyperlink[@ref='A2']", "location", "name"); + assertXPath(pDoc, "/x:worksheet/x:hyperlinks/x:hyperlink[@ref='A3']", "location", "db"); xDocSh->DoClose(); } diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index 0a7a3baeb953..3255607bc910 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -438,7 +438,11 @@ XclExpHyperlink::XclExpHyperlink( const XclExpRoot& rRoot, const SvxURLField& rU } } else - aTextMark += "!A1"; // tdf#143220 link to sheet not valid without cell reference + { + SCTAB nTab; + if (rRoot.GetDoc().GetTable(aTextMark, nTab)) + aTextMark += "!A1"; // tdf#143220 link to sheet not valid without cell reference + } mxTextMark.reset( new XclExpString( aTextMark, XclStrFlags::ForceUnicode, 255 ) ); }