diff --git a/sc/qa/unit/tiledrendering/SheetViewTest.cxx b/sc/qa/unit/tiledrendering/SheetViewTest.cxx index e4c61008fd97..761099707dfd 100644 --- a/sc/qa/unit/tiledrendering/SheetViewTest.cxx +++ b/sc/qa/unit/tiledrendering/SheetViewTest.cxx @@ -478,6 +478,38 @@ CPPUNIT_TEST_FIXTURE(SheetViewTest, testSheetViewManager) CPPUNIT_ASSERT_EQUAL(sc::InvalidSheetViewID, maSheetViewManager.getPreviousSheetView(-99)); } +CPPUNIT_TEST_FIXTURE(SheetViewTest, testCheckIfSheetViewIsSavedInDocument_ODF) +{ + // Check if sheet view holder table is saved into the ODF document + ScModelObj* pModelObj = createDoc("SheetView_AutoFilter.ods"); + pModelObj->initializeForTiledRendering(uno::Sequence()); + + dispatchCommand(mxComponent, u".uno:NewSheetView"_ustr, {}); + Scheduler::ProcessEventsToIdle(); + + save(u"calc8"_ustr); + + xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr); + CPPUNIT_ASSERT(pXmlDoc); + assertXPath(pXmlDoc, "//table:table", 1); +} + +CPPUNIT_TEST_FIXTURE(SheetViewTest, testCheckIfSheetViewIsSavedInDocument_OOXML) +{ + // Check if sheet view holder table is saved into the OOXML document + ScModelObj* pModelObj = createDoc("SheetView_AutoFilter.ods"); + pModelObj->initializeForTiledRendering(uno::Sequence()); + + dispatchCommand(mxComponent, u".uno:NewSheetView"_ustr, {}); + Scheduler::ProcessEventsToIdle(); + + save(u"Calc Office Open XML"_ustr); + + xmlDocUniquePtr pXmlDoc = parseExport(u"xl/workbook.xml"_ustr); + CPPUNIT_ASSERT(pXmlDoc); + assertXPath(pXmlDoc, "/x:workbook/x:sheets/x:sheet", 1); +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx index fe9612053400..f0f8c22e4e05 100644 --- a/sc/source/filter/excel/xelink.cxx +++ b/sc/source/filter/excel/xelink.cxx @@ -659,7 +659,7 @@ XclExpTabInfo::XclExpTabInfo( const XclExpRoot& rRoot ) : for( nScTab = 0; nScTab < mnScCnt; ++nScTab ) { // ignored sheets (skipped by export, with invalid Excel sheet index) - if( rDoc.IsScenario( nScTab ) ) + if (rDoc.IsScenario(nScTab) || rDoc.IsSheetViewHolder(nScTab)) { SetFlag( nScTab, ExcTabBufFlags::Ignore ); } diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index 314f85bd6d23..2223e9257e3a 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -1915,6 +1915,9 @@ void ScXMLExport::ExportContent_() WriteTheLabelRanges(*pDoc, xSpreadDoc); for (sal_Int32 nTable = 0; nTable < nTableCount; ++nTable) { + // We need to skip tables that hold the data for a sheet view + if (pDoc->IsSheetViewHolder(nTable)) + continue; sal_Int64 nStartOffset = -1; sal_Int64 nEndOffset = -1; if (pSheetData && pDoc->IsStreamValid(static_cast(nTable)) && !pDoc->GetChangeTrack())