diff options
Diffstat (limited to 'sc/source/filter/orcus/orcusfiltersimpl.cxx')
-rw-r--r-- | sc/source/filter/orcus/orcusfiltersimpl.cxx | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sc/source/filter/orcus/orcusfiltersimpl.cxx b/sc/source/filter/orcus/orcusfiltersimpl.cxx index 4e6c98b65060..ed33cc185971 100644 --- a/sc/source/filter/orcus/orcusfiltersimpl.cxx +++ b/sc/source/filter/orcus/orcusfiltersimpl.cxx @@ -16,6 +16,7 @@ #include <orcus/spreadsheet/import_interface.hpp> #include <orcus/orcus_csv.hpp> +#include <orcus/orcus_gnumeric.hpp> #include <orcus/global.hpp> #ifdef WNT @@ -50,6 +51,26 @@ bool ScOrcusFiltersImpl::importCSV(ScDocument& rDoc, const OUString& rPath) cons return true; } +bool ScOrcusFiltersImpl::importGnumeric(ScDocument& rDoc, const OUString& rPath) const +{ + ScOrcusFactory aFactory(rDoc); + OString aSysPath = toSystemPath(rPath); + const char* path = aSysPath.getStr(); + + try + { + orcus::orcus_gnumeric filter(&aFactory); + filter.read_file(path); + } + catch (const std::exception& e) + { + SAL_WARN("sc", "Unable to load gnumeric file! " << e.what()); + return false; + } + + return true; +} + ScOrcusXMLContext* ScOrcusFiltersImpl::createXMLContext(ScDocument& rDoc, const rtl::OUString& rPath) const { return new ScOrcusXMLContextImpl(rDoc, rPath); |