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 ) );
     }

Reply via email to