diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
index bd3d3486234e2..8a323e83fd544 100644
--- a/filter/Configuration_filter.mk
+++ b/filter/Configuration_filter.mk
@@ -477,6 +477,7 @@ $(eval $(call filter_Configuration_add_types,fcfg_langpack,fcfg_calc_types.xcu,f
generic_Text \
calc_Gnumeric \
calc_Lotus \
+ calc_Parquet \
calc_QPro \
calc_MS_Excel_40 \
calc_MS_Excel_40_VorlageTemplate \
@@ -535,6 +536,7 @@ $(eval $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_calc_filters.x
calc_HTML_WebQuery \
calc_StarOffice_XML_Calc_Template \
calc_pdf_Export \
+ calc_Parquet \
dBase \
calc8 \
calc8_template \
diff --git a/filter/source/config/fragments/filters/calc_Parquet.xcu b/filter/source/config/fragments/filters/calc_Parquet.xcu
new file mode 100644
index 0000000000000..5b0fea8257bb6
--- /dev/null
+++ b/filter/source/config/fragments/filters/calc_Parquet.xcu
@@ -0,0 +1,19 @@
+
+
+ IMPORT ALIEN PREFERRED
+
+
+
+ Apache Parquet
+
+ com.sun.star.sheet.SpreadsheetDocument
+
+ Apache Parquet Spreadsheet
+
+
diff --git a/filter/source/config/fragments/types/calc_Parquet.xcu b/filter/source/config/fragments/types/calc_Parquet.xcu
new file mode 100644
index 0000000000000..6c29d886c92fe
--- /dev/null
+++ b/filter/source/config/fragments/types/calc_Parquet.xcu
@@ -0,0 +1,17 @@
+
+
+ com.sun.star.comp.sc.OrcusFilterDetect
+
+ parquet
+
+ true
+ Apache Parquet Spreadsheet
+ Apache Parquet
+
+
diff --git a/sc/inc/orcusfilters.hxx b/sc/inc/orcusfilters.hxx
index 6d17f3741ebb6..c49b6899ddec3 100644
--- a/sc/inc/orcusfilters.hxx
+++ b/sc/inc/orcusfilters.hxx
@@ -33,6 +33,8 @@ public:
virtual bool importExcel2003XML(ScDocument& rDoc, SfxMedium& rMedium) const = 0;
+ virtual bool importParquet(ScDocument& rDoc, SfxMedium& rMedium) const = 0;
+
virtual bool importXLSX(ScDocument& rDoc, SfxMedium& rMedium) const = 0;
virtual bool importODS(ScDocument& rDoc, SfxMedium& rMedium) const = 0;
diff --git a/sc/source/filter/inc/orcusfiltersimpl.hxx b/sc/source/filter/inc/orcusfiltersimpl.hxx
index 070d69aec03e0..93cffbaa81ee7 100644
--- a/sc/source/filter/inc/orcusfiltersimpl.hxx
+++ b/sc/source/filter/inc/orcusfiltersimpl.hxx
@@ -18,6 +18,7 @@ class ScOrcusFiltersImpl : public ScOrcusFilters
public:
virtual bool importCSV(ScDocument& rDoc, SfxMedium& rMedium) const override;
virtual bool importGnumeric(ScDocument& rDoc, SfxMedium& rMedium) const override;
+ virtual bool importParquet(ScDocument& rDoc, SfxMedium& rMedium) const override;
virtual bool importExcel2003XML(ScDocument& rDoc, SfxMedium& rMedium) const override;
virtual bool importXLSX(ScDocument& rDoc, SfxMedium& rMedium) const override;
virtual bool importODS(ScDocument& rDoc, SfxMedium& rMedium) const override;
diff --git a/sc/source/filter/orcus/filterdetect.cxx b/sc/source/filter/orcus/filterdetect.cxx
index 5750932e95d73..06f6015a8f0cf 100644
--- a/sc/source/filter/orcus/filterdetect.cxx
+++ b/sc/source/filter/orcus/filterdetect.cxx
@@ -90,6 +90,8 @@ OUString OrcusFormatDetect::detect(css::uno::Sequence
return "Gnumeric XML";
case orcus::format_t::xls_xml:
return "calc_MS_Excel_2003_XML";
+ case orcus::format_t::parquet:
+ return "Apache Parquet";
default:
;
}
diff --git a/sc/source/filter/orcus/orcusfiltersimpl.cxx b/sc/source/filter/orcus/orcusfiltersimpl.cxx
index 1d3bc9c462343..47d632fa8e5ad 100644
--- a/sc/source/filter/orcus/orcusfiltersimpl.cxx
+++ b/sc/source/filter/orcus/orcusfiltersimpl.cxx
@@ -24,6 +24,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -88,6 +89,15 @@ bool ScOrcusFiltersImpl::importGnumeric(ScDocument& rDoc, SfxMedium& rMedium) co
return loadFileContent(rMedium, filter);
}
+bool ScOrcusFiltersImpl::importParquet(ScDocument& rDoc, SfxMedium& rMedium) const
+{
+ ScOrcusFactory aFactory(rDoc);
+ aFactory.setStatusIndicator(getStatusIndicator(rMedium));
+
+ orcus::orcus_parquet filter(&aFactory);
+ return loadFileContent(rMedium, filter);
+}
+
bool ScOrcusFiltersImpl::importExcel2003XML(ScDocument& rDoc, SfxMedium& rMedium) const
{
ScOrcusFactory aFactory(rDoc);
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index 2b568c5d8d549..4793313029a3b 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -1280,6 +1280,14 @@ bool ScDocShell::ConvertFrom( SfxMedium& rMedium )
bRet = pOrcus->importExcel2003XML(*m_pDocument, rMedium);
}
+ else if (aFltName == "Apache Parquet Spreadsheet")
+ {
+ ScOrcusFilters* pOrcus = ScFormatFilter::Get().GetOrcusFilters();
+ if (!pOrcus)
+ return false;
+
+ bRet = pOrcus->importParquet(*m_pDocument, rMedium);
+ }
else if (aFltName == SC_TEXT_CSV_FILTER_NAME)
{
ScAsciiOptions aOptions;