sc: OOXML import and export the model::Theme properly
Change-Id: I76fc928a53d007a9f5e9174167e0594208a4b47a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153784 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
This commit is contained in:
committed by
Tomaž Vajngerl
parent
c7d202a61f
commit
9a6cdc8a90
@@ -53,6 +53,10 @@
|
||||
#include <o3tl/safeint.hxx>
|
||||
#include <oox/token/tokens.hxx>
|
||||
#include <oox/token/namespaces.hxx>
|
||||
#include <oox/token/relationship.hxx>
|
||||
#include <oox/export/ThemeExport.hxx>
|
||||
#include <docmodel/theme/Theme.hxx>
|
||||
#include <svx/svdpage.hxx>
|
||||
#include <memory>
|
||||
|
||||
using namespace oox;
|
||||
@@ -861,6 +865,28 @@ void ExcDocument::WriteXml( XclExpXmlStream& rStrm )
|
||||
{
|
||||
InitializeSave();
|
||||
|
||||
auto* pDrawLayer = GetDoc().GetDrawLayer();
|
||||
if (pDrawLayer)
|
||||
{
|
||||
SdrPage* pPage = pDrawLayer->GetPage(0);
|
||||
if (pPage)
|
||||
{
|
||||
std::shared_ptr<model::Theme> pTheme = pPage->getSdrPageProperties().GetTheme();
|
||||
if (pTheme)
|
||||
{
|
||||
OUString sThemeRelationshipPath = "theme/theme1.xml";
|
||||
OUString sThemeDocumentPath = "xl/" + sThemeRelationshipPath;
|
||||
|
||||
oox::ThemeExport aThemeExport(&rStrm, oox::drawingml::DOCUMENT_XLSX);
|
||||
aThemeExport.write(sThemeDocumentPath, *pTheme);
|
||||
|
||||
rStrm.addRelation(rStrm.GetCurrentStream()->getOutputStream(),
|
||||
oox::getRelationship(Relationship::THEME),
|
||||
sThemeRelationshipPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
aHeader.WriteXml( rStrm );
|
||||
|
||||
for( size_t nTab = 0, nTabCount = maTableList.GetSize(); nTab < nTabCount; ++nTab )
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
#include <vcl/weld.hxx>
|
||||
|
||||
#include <oox/core/fastparser.hxx>
|
||||
#include <svx/svdpage.hxx>
|
||||
#include <comphelper/threadpool.hxx>
|
||||
#include <sal/log.hxx>
|
||||
#include <osl/diagnose.h>
|
||||
@@ -486,6 +487,12 @@ void WorkbookFragment::finalizeImport()
|
||||
// load all worksheets
|
||||
importSheetFragments(*this, aSheetFragments);
|
||||
|
||||
SdrPage* pPage = pModel->GetPage(0);
|
||||
if (pPage && pTheme && !pTheme->GetName().isEmpty())
|
||||
{
|
||||
pPage->getSdrPageProperties().SetTheme(pTheme);
|
||||
}
|
||||
|
||||
// assumes getTables().finalizeImport ( which creates the DatabaseRanges )
|
||||
// has been called already
|
||||
getTables().applyAutoFilters();
|
||||
@@ -512,6 +519,7 @@ void WorkbookFragment::finalizeImport()
|
||||
rxSheetGlob.reset();
|
||||
}
|
||||
|
||||
|
||||
getDocImport().finalize();
|
||||
|
||||
recalcFormulaCells();
|
||||
|
||||
Reference in New Issue
Block a user