12#include <tokenarray.hxx>
14#include <osl/thread.hxx>
17#include <sfx2/sfxsids.hrc>
19#include <rtl/ustring.hxx>
22#include <orcus/orcus_csv.hpp>
23#include <orcus/orcus_gnumeric.hpp>
24#include <orcus/orcus_xlsx.hpp>
25#include <orcus/orcus_xls_xml.hpp>
26#include <orcus/orcus_ods.hpp>
27#include <orcus/orcus_import_ods.hpp>
28#include <orcus/stream.hpp>
29#include <com/sun/star/task/XStatusIndicator.hpp>
35uno::Reference<task::XStatusIndicator> getStatusIndicator(
const SfxMedium& rMedium)
37 uno::Reference<task::XStatusIndicator> xStatusIndicator;
43 xStatusIndicator.set(pItem->
GetValue(), uno::UNO_QUERY);
45 return xStatusIndicator;
48bool loadFileContent(
SfxMedium& rMedium, orcus::iface::import_filter&
filter)
52 static const size_t nReadBuffer = 1024 * 32;
53 OStringBuffer
aBuffer((
int(nReadBuffer)));
57 char pData[nReadBuffer];
58 nRead = pStream->
ReadBytes(pData, nReadBuffer);
60 }
while (nRead == nReadBuffer);
64 filter.read_stream(aBuffer);
66 catch (
const std::exception& e)
68 SAL_WARN(
"sc",
"Unable to load file via orcus filter! " << e.what());
81 orcus::orcus_csv
filter(&aFactory);
82 return loadFileContent(rMedium,
filter);
90 orcus::orcus_gnumeric
filter(&aFactory);
91 return loadFileContent(rMedium,
filter);
99 orcus::orcus_xls_xml
filter(&aFactory);
100 return loadFileContent(rMedium,
filter);
108 orcus::orcus_xlsx
filter(&aFactory);
109 return loadFileContent(rMedium,
filter);
117 orcus::orcus_ods
filter(&aFactory);
118 return loadFileContent(rMedium,
filter);
130 orcus::file_content content(aPath8);
133 orcus::import_ods::read_styles(content.str(), &aStyles);
135 catch (
const std::exception& e)
137 SAL_WARN(
"sc",
"Unable to load styles from xml file! " << e.what());
145 const OUString& rPath)
const
147 return std::make_unique<ScOrcusXMLContextImpl>(rDoc, rPath);
void setStatusIndicator(const css::uno::Reference< css::task::XStatusIndicator > &rIndicator)
virtual bool importXLSX(ScDocument &rDoc, SfxMedium &rMedium) const override
virtual bool importGnumeric(ScDocument &rDoc, SfxMedium &rMedium) const override
virtual std::unique_ptr< ScOrcusXMLContext > createXMLContext(ScDocument &rDoc, const OUString &rPath) const override
Create a context for XML file.
virtual bool importODS(ScDocument &rDoc, SfxMedium &rMedium) const override
virtual bool importCSV(ScDocument &rDoc, SfxMedium &rMedium) const override
virtual bool importExcel2003XML(ScDocument &rDoc, SfxMedium &rMedium) const override
virtual bool importODS_Styles(ScDocument &rDoc, OUString &aFileName) const override
Used to import just the styles from an xml file.
const SfxPoolItem * GetItem(sal_uInt16 nWhich, bool bSearchInParent=true) const
SfxItemSet * GetItemSet() const
const css::uno::Any & GetValue() const
sal_uInt64 Seek(sal_uInt64 nPos)
std::size_t ReadBytes(void *pData, std::size_t nSize)
#define SAL_WARN(area, stream)
std::unique_ptr< sal_Int32[]> pData
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
std::unique_ptr< char[]> aBuffer