diff options
authorJustin Luth <>2018-06-05 19:30:58 +0300
committerEike Rathke <>2018-06-12 15:44:03 +0200
commitf62340a104813e4a6a34e7281d86407bc8314ffd (patch)
parentdaa91fedc4b6675f66a02265f596e06513171919 (diff)
tdf#114487 sc htmlimp: non-global sheet range names
Allow multiple file imports, each one having a non-conflicting range name, by being sheet specific. As Eike states, "This does *not* mean that they couldn't be referenced from other sheets. By prefixing the sheet name it can be used from any other sheet, for example Sheet2.HTML_1. (This wasn't possible in early versions with sheet-local names but it has been possible for a while already)." In theory, it would previously have been possible to create a generic sheet with calculations using a range name that doesn't exist yet, and then importing *any* file to be analyzed. In practice that has never been possible since all names were relative, and imports always create a new sheet, so the relative name would point elsewhere. Also, the non-existant name only resolves after a round-trip of the file, not immediately upon file import. So, it is logical to set the imported range names to be sheet-local instead of global. Change-Id: I3103f0655b2373bb731c192bb5d2c0757938ee28 Reviewed-on: Tested-by: Jenkins <> Reviewed-by: Justin Luth <> Reviewed-by: Eike Rathke <> (cherry picked from commit 5720c85ccea9f1481bd604b806c5be728e59a13f) Reviewed-on:
2 files changed, 3 insertions, 3 deletions
diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index 8762cbcc339a..5e65134fbfbe 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -3336,9 +3336,9 @@ void ScExportTest::testAbsNamedRangeHTML()
ScDocument& rDoc = xDocSh2->GetDocument();
- ScRangeData* pRangeData = rDoc.GetRangeName()->findByUpperName(OUString("HTML_1"));
+ ScRangeData* pRangeData = rDoc.GetRangeName(0)->findByUpperName(OUString("HTML_1"));
ScSingleRefData* pRef = pRangeData->GetCode()->FirstToken()->GetSingleRef();
- CPPUNIT_ASSERT_MESSAGE("HTML_1 is an absolute reference",!pRef->IsTabRel());
+ CPPUNIT_ASSERT_MESSAGE("Sheet1.HTML_1 is an absolute reference",!pRef->IsTabRel());
void ScExportTest::testSheetLocalRangeNameXLS()
diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx
index 4957b2d381ad..45b942ab1b98 100644
--- a/sc/source/filter/html/htmlimp.cxx
+++ b/sc/source/filter/html/htmlimp.cxx
@@ -107,7 +107,7 @@ void ScHTMLImport::InsertRangeName( ScDocument* pDoc, const OUString& rName, con
ScTokenArray aTokArray;
aTokArray.AddDoubleReference( aRefData );
ScRangeData* pRangeData = new ScRangeData( pDoc, rName, aTokArray );
- pDoc->GetRangeName()->insert( pRangeData );
+ pDoc->GetRangeName( rRange.aStart.Tab() )->insert( pRangeData );
void ScHTMLImport::WriteToDocument(