sc/source/filter/excel/xename.cxx |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

New commits:
commit bf4fe0c2ba1d0a44cc07c6afba6d56b8adf8af50
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sun Feb 23 20:36:26 2025 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Mon Feb 24 09:40:32 2025 +0100

    tdf#164249 adjust XML_localSheetId to take into account not exported sheets
    
    this is to avoid failure on re-import of:
    
    XmlFilterBase::importFragment - XML parser failed in fragment 
'xl/workbook.xml'
            com.sun.star.uno.RuntimeException message: "invalid sheet index 
used at sc/source/filter/oox/workbookhelper.cxx:438"
    Error: source file could not be loaded
    
    Change-Id: I235edd018c4ebcd4bafa9c549bdec9f23f0bd6b2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182069
    Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins

diff --git a/sc/source/filter/excel/xename.cxx 
b/sc/source/filter/excel/xename.cxx
index aa33b31deeb3..2312a7920613 100644
--- a/sc/source/filter/excel/xename.cxx
+++ b/sc/source/filter/excel/xename.cxx
@@ -330,6 +330,9 @@ OUString XclExpName::GetWithDefaultRangeSeparator( const 
OUString& rSymbol ) con
 void XclExpName::SaveXml( XclExpXmlStream& rStrm )
 {
     sax_fastparser::FSHelperPtr& rWorkbook = rStrm.GetCurrentStream();
+    // Sheets where IsExportTab is not true are not exported, so use mnXclTab
+    // (1 based) to get the sheetid as of the exported document's perspective.
+    SCTAB nXlsxTab = mnXclTab - 1;
     rWorkbook->startElement( XML_definedName,
             // OOXTODO: XML_comment, "",
             // OOXTODO: XML_customMenu, "",
@@ -338,7 +341,7 @@ void XclExpName::SaveXml( XclExpXmlStream& rStrm )
             // OOXTODO: XML_functionGroupId, "",
             // OOXTODO: XML_help, "",
             XML_hidden, ToPsz( ::get_flag( mnFlags, EXC_NAME_HIDDEN ) ),
-            XML_localSheetId, sax_fastparser::UseIf(OString::number( mnScTab 
), mnScTab != SCTAB_GLOBAL),
+            XML_localSheetId, sax_fastparser::UseIf(OString::number(nXlsxTab), 
mnScTab != SCTAB_GLOBAL),
             XML_name, maOrigName.toUtf8(),
             // OOXTODO: XML_publishToServer, "",
             // OOXTODO: XML_shortcutKey, "",

Reply via email to