LibreOffice Module sc (master)  1
xeroot.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #include <officecfg/Office/Common.hxx>
21 #include <rtl/random.h>
22 #include <sal/log.hxx>
23 #include <sfx2/docfile.hxx>
24 #include <sfx2/frame.hxx>
25 #include <sfx2/sfxsids.hrc>
26 #include <unotools/saveopt.hxx>
27 #include <svl/itemset.hxx>
28 #include <svl/stritem.hxx>
29 #include <xecontent.hxx>
30 #include <xeescher.hxx>
31 #include <xeformula.hxx>
32 #include <xehelper.hxx>
33 #include <xelink.hxx>
34 #include <xename.hxx>
35 #include <xepivot.hxx>
36 #include <xestyle.hxx>
37 #include <xeroot.hxx>
38 #include <xepivotxml.hxx>
39 #include <xedbdata.hxx>
40 #include <xlcontent.hxx>
41 #include <xlname.hxx>
42 #include <xllink.hxx>
43 
44 #include <excrecds.hxx>
45 #include <tabprotection.hxx>
46 #include <document.hxx>
47 
48 #include <formulabase.hxx>
49 #include <com/sun/star/sheet/FormulaOpCodeMapEntry.hpp>
50 #include <com/sun/star/frame/XModel.hpp>
51 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
52 
53 using namespace ::com::sun::star;
54 
55 // Global data ================================================================
56 
58  const tools::SvRef<SotStorage>& xRootStrg, ScDocument& rDoc, rtl_TextEncoding eTextEnc ) :
59  XclRootData( eBiff, rMedium, xRootStrg, rDoc, eTextEnc, true )
60 {
62  ? officecfg::Office::Common::Save::URL::Internet::get()
63  : officecfg::Office::Common::Save::URL::FileSystem::get();
64  maStringBuf.setLength(0);
65 }
66 
68 {
69 }
70 
72  XclRoot( rExpRootData ),
73  mrExpData( rExpRootData )
74 {
75 }
76 
78 {
79  OSL_ENSURE( mrExpData.mxTabInfo, "XclExpRoot::GetTabInfo - missing object (wrong BIFF?)" );
80  return *mrExpData.mxTabInfo;
81 }
82 
84 {
85  OSL_ENSURE( mrExpData.mxAddrConv, "XclExpRoot::GetAddressConverter - missing object (wrong BIFF?)" );
86  return *mrExpData.mxAddrConv;
87 }
88 
90 {
91  OSL_ENSURE( mrExpData.mxFmlaComp, "XclExpRoot::GetFormulaCompiler - missing object (wrong BIFF?)" );
92  return *mrExpData.mxFmlaComp;
93 }
94 
96 {
97  OSL_ENSURE( mrExpData.mxProgress, "XclExpRoot::GetProgressBar - missing object (wrong BIFF?)" );
98  return *mrExpData.mxProgress;
99 }
100 
102 {
103  OSL_ENSURE( mrExpData.mxSst, "XclExpRoot::GetSst - missing object (wrong BIFF?)" );
104  return *mrExpData.mxSst;
105 }
106 
108 {
109  OSL_ENSURE( mrExpData.mxPalette, "XclExpRoot::GetPalette - missing object (wrong BIFF?)" );
110  return *mrExpData.mxPalette;
111 }
112 
114 {
115  OSL_ENSURE( mrExpData.mxFontBfr, "XclExpRoot::GetFontBuffer - missing object (wrong BIFF?)" );
116  return *mrExpData.mxFontBfr;
117 }
118 
120 {
121  OSL_ENSURE( mrExpData.mxNumFmtBfr, "XclExpRoot::GetNumFmtBuffer - missing object (wrong BIFF?)" );
122  return *mrExpData.mxNumFmtBfr;
123 }
124 
126 {
127  OSL_ENSURE( mrExpData.mxXFBfr, "XclExpRoot::GetXFBuffer - missing object (wrong BIFF?)" );
128  return *mrExpData.mxXFBfr;
129 }
130 
132 {
133  OSL_ENSURE( mrExpData.mxGlobLinkMgr, "XclExpRoot::GetGlobalLinkManager - missing object (wrong BIFF?)" );
134  return *mrExpData.mxGlobLinkMgr;
135 }
136 
138 {
139  OSL_ENSURE( GetLocalLinkMgrRef(), "XclExpRoot::GetLocalLinkManager - missing object (wrong BIFF?)" );
140  return *GetLocalLinkMgrRef();
141 }
142 
144 {
145  OSL_ENSURE( mrExpData.mxNameMgr, "XclExpRoot::GetNameManager - missing object (wrong BIFF?)" );
146  return *mrExpData.mxNameMgr;
147 }
148 
150 {
151  OSL_ENSURE( mrExpData.mxObjMgr, "XclExpRoot::GetObjectManager - missing object (wrong BIFF?)" );
152  return *mrExpData.mxObjMgr;
153 }
154 
156 {
157  OSL_ENSURE( mrExpData.mxFilterMgr, "XclExpRoot::GetFilterManager - missing object (wrong BIFF?)" );
158  return *mrExpData.mxFilterMgr;
159 }
160 
162 {
163  OSL_ENSURE( mrExpData.mxDxfs, "XclExpRoot::GetDxfs - missing object ( wrong BIFF?)" );
164  return *mrExpData.mxDxfs;
165 }
166 
168 {
169  OSL_ENSURE( mrExpData.mxPTableMgr, "XclExpRoot::GetPivotTableManager - missing object (wrong BIFF?)" );
170  return *mrExpData.mxPTableMgr;
171 }
172 
174 {
175  assert(mrExpData.mxXmlPTableMgr);
176  return *mrExpData.mxXmlPTableMgr;
177 }
178 
180 {
181  assert(mrExpData.mxTablesMgr);
182  return *mrExpData.mxTablesMgr;
183 }
184 
186 {
187  mrExpData.mxTabInfo = std::make_shared<XclExpTabInfo>( GetRoot() );
188  mrExpData.mxAddrConv = std::make_shared<XclExpAddressConverter>( GetRoot() );
189  mrExpData.mxFmlaComp = std::make_shared<XclExpFormulaCompiler>( GetRoot() );
190  mrExpData.mxProgress = std::make_shared<XclExpProgressBar>( GetRoot() );
191 
193 }
194 
196 {
198 
199  if( GetBiff() >= EXC_BIFF5 )
200  {
207  }
208 
209  if( GetBiff() == EXC_BIFF8 )
210  {
211  mrExpData.mxSst = new XclExpSst();
212  mrExpData.mxObjMgr = std::make_shared<XclExpObjectManager>( GetRoot() );
213  mrExpData.mxFilterMgr = std::make_shared<XclExpFilterManager>( GetRoot() );
214  mrExpData.mxPTableMgr = std::make_shared<XclExpPivotTableManager>( GetRoot() );
215  // BIFF8: only one link manager for all sheets
217  mrExpData.mxDxfs = new XclExpDxfs( GetRoot() );
218  }
219 
220  if( GetOutput() == EXC_OUTPUT_XML_2007 )
221  {
222  mrExpData.mxXmlPTableMgr = std::make_shared<XclExpXmlPivotTableManager>(GetRoot());
223  mrExpData.mxTablesMgr = std::make_shared<XclExpTablesManager>(GetRoot());
224 
225  do
226  {
227  ScDocument& rDoc = GetDoc();
228  // Pass the model factory to OpCodeProvider, not the process
229  // service factory, otherwise a FormulaOpCodeMapperObj would be
230  // instantiated instead of a ScFormulaOpCodeMapperObj and the
231  // ScCompiler virtuals not be called! Which would be the case with
232  // the current (2013-01-24) rDoc.GetServiceManager()
233  const SfxObjectShell* pShell = rDoc.GetDocumentShell();
234  if (!pShell)
235  {
236  SAL_WARN( "sc", "XclExpRoot::InitializeGlobals - no object shell");
237  break;
238  }
239  uno::Reference< lang::XComponent > xComponent = pShell->GetModel();
240  if (!xComponent.is())
241  {
242  SAL_WARN( "sc", "XclExpRoot::InitializeGlobals - no component");
243  break;
244  }
245  uno::Reference< lang::XMultiServiceFactory > xModelFactory( xComponent, uno::UNO_QUERY);
246  oox::xls::OpCodeProvider aOpCodeProvider(xModelFactory, false);
247  // Compiler mocks about non-matching ctor or conversion from
248  // Sequence<...> to Sequence<const ...> if directly created or passed,
249  // conversion through Any works around.
250  uno::Any aAny( aOpCodeProvider.getOoxParserMap());
251  uno::Sequence< const sheet::FormulaOpCodeMapEntry > aOpCodeMapping;
252  if (!(aAny >>= aOpCodeMapping))
253  {
254  SAL_WARN( "sc", "XclExpRoot::InitializeGlobals - no OpCodeMap");
255  break;
256  }
257  ScCompiler aCompiler( rDoc, ScAddress(), rDoc.GetGrammar());
259  } while(false);
260  }
261 
264 }
265 
267 {
268  SetCurrScTab( nScTab );
269  if( GetBiff() == EXC_BIFF5 )
270  {
271  // local link manager per sheet
273  }
274 }
275 
277 {
278  GetPalette().Finalize();
279  GetXFBuffer().Finalize();
280 }
281 
282 XclExpRecordRef XclExpRoot::CreateRecord( sal_uInt16 nRecId ) const
283 {
284  XclExpRecordRef xRec;
285  switch( nRecId )
286  {
287  case EXC_ID_PALETTE: xRec = mrExpData.mxPalette; break;
288  case EXC_ID_FONTLIST: xRec = mrExpData.mxFontBfr; break;
289  case EXC_ID_FORMATLIST: xRec = mrExpData.mxNumFmtBfr; break;
290  case EXC_ID_XFLIST: xRec = mrExpData.mxXFBfr; break;
291  case EXC_ID_SST: xRec = mrExpData.mxSst; break;
292  case EXC_ID_EXTERNSHEET: xRec = GetLocalLinkMgrRef(); break;
293  case EXC_ID_NAME: xRec = mrExpData.mxNameMgr; break;
294  case EXC_ID_DXFS: xRec = mrExpData.mxDxfs; break;
295  }
296  OSL_ENSURE( xRec, "XclExpRoot::CreateRecord - unknown record ID or missing object" );
297  return xRec;
298 }
299 
301 {
302  // We need to encrypt the content when the document structure is protected.
303  const ScDocProtection* pDocProt = GetDoc().GetDocProtection();
304  if (pDocProt && pDocProt->isProtected() && pDocProt->isOptionEnabled(ScDocProtection::STRUCTURE))
305  return true;
306 
307  // Whether password is entered directly into the save dialog.
308  return GetEncryptionData().hasElements();
309 }
310 
311 uno::Sequence< beans::NamedValue > XclExpRoot::GenerateEncryptionData( const OUString& aPass )
312 {
313  uno::Sequence< beans::NamedValue > aEncryptionData;
314 
315  if ( !aPass.isEmpty() && aPass.getLength() < 16 )
316  {
317  rtlRandomPool aRandomPool = rtl_random_createPool ();
318  sal_uInt8 pnDocId[16];
319  rtl_random_getBytes( aRandomPool, pnDocId, 16 );
320 
321  rtl_random_destroyPool( aRandomPool );
322 
323  sal_uInt16 pnPasswd[16] = {};
324  for( sal_Int32 nChar = 0; nChar < aPass.getLength(); ++nChar )
325  pnPasswd[nChar] = aPass[nChar];
326 
328  aCodec.InitKey( pnPasswd, pnDocId );
329  aEncryptionData = aCodec.GetEncryptionData();
330  }
331 
332  return aEncryptionData;
333 }
334 
335 uno::Sequence< beans::NamedValue > XclExpRoot::GetEncryptionData() const
336 {
337  uno::Sequence< beans::NamedValue > aEncryptionData;
338  const SfxUnoAnyItem* pEncryptionDataItem = SfxItemSet::GetItem<SfxUnoAnyItem>(GetMedium().GetItemSet(), SID_ENCRYPTIONDATA, false);
339  if ( pEncryptionDataItem )
340  pEncryptionDataItem->GetValue() >>= aEncryptionData;
341  else
342  {
343  // try to get the encryption data from the password
344  const SfxStringItem* pPasswordItem = SfxItemSet::GetItem<SfxStringItem>(GetMedium().GetItemSet(), SID_PASSWORD, false);
345  if ( pPasswordItem && !pPasswordItem->GetValue().isEmpty() )
346  aEncryptionData = GenerateEncryptionData( pPasswordItem->GetValue() );
347  }
348 
349  return aEncryptionData;
350 }
351 
352 uno::Sequence< beans::NamedValue > XclExpRoot::GenerateDefaultEncryptionData()
353 {
355 }
356 
358 {
360 }
361 
362 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
XclExpFilterManager & GetFilterManager() const
Returns the filter manager.
Definition: xeroot.cxx:155
Stores all XF records (cell formats and cell styles) in the document.
Definition: xestyle.hxx:574
XclExpObjectMgrRef mxObjMgr
Local link manager for a sheet.
Definition: xeroot.hxx:91
static OUString GetDefaultPassword()
Returns the default password used for stream encryption.
Definition: xlroot.hxx:179
XclBiff
An enumeration for all Excel file format types (BIFF types).
Definition: xlconst.hxx:29
Stores global buffers and data needed for Excel export filter.
Definition: xeroot.hxx:59
void InitializeGlobals()
Is called when export filter starts to create the workbook global data (>=BIFF5). ...
Definition: xeroot.cxx:195
The main progress bar for the export filter.
Definition: xehelper.hxx:43
MS Excel binary .xls.
Definition: xlconst.hxx:43
std::shared_ptr< XclExpXmlPivotTableManager > mxXmlPTableMgr
All delta formatting entries.
Definition: xeroot.hxx:96
void InitializeConvert()
Is called when export filter starts to create the Excel document (all BIFF versions).
Definition: xeroot.cxx:185
XclExpRoot(XclExpRootData &rExpRootData)
Definition: xeroot.cxx:71
XclExpAddrConvRef mxAddrConv
Calc->Excel sheet index conversion.
Definition: xeroot.hxx:79
virtual void InitKey(const sal_uInt16 pPassData[16], const sal_uInt8 pDocId[16]) override
void Initialize()
Initializes all segments and sub progress bars.
Definition: xehelper.cxx:77
XclExpLinkManager & GetLocalLinkManager() const
Returns the local link manager for the current sheet.
Definition: xeroot.cxx:137
OStringBuffer maStringBuf
true = Store URLs relative.
Definition: xeroot.hxx:104
const sal_uInt16 EXC_ID_NAME
Definition: xlname.hxx:28
XclExpPivotTableManager & GetPivotTableManager() const
Returns the pivot table manager.
Definition: xeroot.cxx:167
virtual bool isProtected() const override
css::uno::Reference< css::frame::XModel3 > GetModel() const
XclExpFormulaCompiler & GetFormulaCompiler() const
Returns the formula compiler to produce formula token arrays.
Definition: xeroot.cxx:89
static css::uno::Sequence< css::beans::NamedValue > GenerateEncryptionData(const OUString &aPass)
Definition: xeroot.cxx:311
Stores global buffers and data needed elsewhere in the Excel filters.
Definition: xlroot.hxx:61
XclExpNameMgrRef mxNameMgr
All XF records in the file.
Definition: xeroot.hxx:88
XclExpProgressBar & GetProgressBar() const
Returns the export progress bar.
Definition: xeroot.cxx:95
const sal_uInt16 EXC_ID_DXFS
For internal use only.
Definition: xestyle.hxx:40
SC_DLLPUBLIC formula::FormulaGrammar::Grammar GetGrammar() const
Definition: document.hxx:984
ScDocument & GetDoc() const
Returns reference to the destination document (import) or source document (export).
Definition: xlroot.cxx:285
The formula compiler to create Excel token arrays from Calc token arrays.
Definition: xeformula.hxx:51
static css::uno::Sequence< css::beans::NamedValue > GenerateDefaultEncryptionData()
Definition: xeroot.cxx:352
XclExpXFBfrRef mxXFBfr
All number formats in the file.
Definition: xeroot.hxx:87
MS Excel 4.0.
Definition: xlconst.hxx:34
XclExpRootData(XclBiff eBiff, SfxMedium &rMedium, const tools::SvRef< SotStorage > &xRootStrg, ScDocument &rDoc, rtl_TextEncoding eTextEnc)
buffer to avoid massive OUString allocations
Definition: xeroot.cxx:57
const css::uno::Any & GetValue() const
Stores all number formats used in the document.
Definition: xestyle.hxx:268
virtual css::uno::Sequence< css::beans::NamedValue > GetEncryptionData()
const SCTAB SCTAB_GLOBAL
An invalid Calc sheet index, for common use.
Definition: xlconst.hxx:74
XclExpFontBfrRef mxFontBfr
The color buffer.
Definition: xeroot.hxx:85
XclExpDxfs & GetDxfs() const
Returns the differential formatting list.
Definition: xeroot.cxx:161
Provides access to API op-codes for all available formula tokens and to function info structs for all...
XclExpLinkManager & GetGlobalLinkManager() const
Returns the global link manager for defined names.
Definition: xeroot.cxx:131
css::uno::Sequence< css::sheet::FormulaOpCodeMapEntry > getOoxParserMap() const
Returns the op-code map that is used by the OOXML formula parser.
SC_DLLPUBLIC ScDocProtection * GetDocProtection() const
Definition: documen3.cxx:1890
XclExpRootData & mrExpData
Definition: xeroot.hxx:188
MS Excel 5.0, MS Excel 7.0 (95)
Definition: xlconst.hxx:35
XclOutput GetOutput() const
Returns the current output format of the importer/exporter.
Definition: xlroot.hxx:143
XclExpRootData::XclExpLinkMgrRef const & GetLocalLinkMgrRef() const
Returns the local or global link manager, depending on current context.
Definition: xeroot.cxx:357
XclExpAddressConverter & GetAddressConverter() const
Returns the address converter.
Definition: xeroot.cxx:83
const sal_uInt16 EXC_ID_FONTLIST
Definition: xestyle.hxx:37
Manager that stores all internal defined names (NAME records) of the document.
Definition: xename.hxx:31
XclExpFilterMgrRef mxFilterMgr
All drawing objects.
Definition: xeroot.hxx:92
XclExpXmlPivotTableManager & GetXmlPivotTableManager()
Definition: xeroot.cxx:173
XclExpPalette & GetPalette() const
Returns the color buffer.
Definition: xeroot.cxx:107
void Finalize()
Reduces the XF record list to the maximum allowed number of records.
Definition: xestyle.cxx:2499
The main class for pivot table export.
Definition: xepivot.hxx:405
XclExpNumFmtBuffer & GetNumFmtBuffer() const
Returns the number format buffer.
Definition: xeroot.cxx:119
const OUString & GetValue() const
Stores all used colors in the document.
Definition: xestyle.hxx:74
Stores the correct Excel sheet index for each Calc sheet.
Definition: xelink.hxx:61
SfxItemSet * GetItemSet() const
XclExpTablesManager & GetTablesManager()
Definition: xeroot.cxx:179
XclExpNameManager & GetNameManager() const
Returns the buffer that contains internal defined names.
Definition: xeroot.cxx:143
XclExpTabInfo & GetTabInfo() const
Returns the buffer for Calc->Excel sheet index conversion.
Definition: xeroot.cxx:77
bool mbRelUrl
mapping between op-codes and names
Definition: xeroot.hxx:102
XclExpRecordRef CreateRecord(sal_uInt16 nRecId) const
Returns the reference to a record (or record list) representing a root object.
Definition: xeroot.cxx:282
void InitializeSave()
Is called before export filter starts to write the records to the stream.
Definition: xeroot.cxx:276
void Finalize()
Reduces the color list to the maximum count of the current BIFF version.
Definition: xestyle.cxx:776
const XclExpRoot & GetRoot() const
Returns this root instance - for code readability in derived classes.
Definition: xeroot.hxx:118
XclExpSst & GetSst() const
Returns the shared string table.
Definition: xeroot.cxx:101
const sal_uInt16 EXC_ID_XFLIST
For internal use only.
Definition: xestyle.hxx:39
Stores all data for database ranges (tables in Excel speak).
Definition: xedbdata.hxx:52
const sal_uInt16 EXC_ID_SST
Definition: xlcontent.hxx:44
void SetCurrScTab(SCTAB nScTab)
Sets the current Calc sheet index.
Definition: xlroot.hxx:261
SfxMedium & mrMedium
Current Output format.
Definition: xlroot.hxx:77
Provides functions to convert Calc cell addresses to Excel cell addresses.
Definition: xehelper.hxx:81
XclExpNumFmtBfrRef mxNumFmtBfr
All fonts in the file.
Definition: xeroot.hxx:86
void Initialize()
Inserts predefined built-in styles and user-defined styles.
Definition: xestyle.cxx:2457
void * rtlRandomPool
XclExpDxfsRef mxDxfs
All pivot tables and pivot caches.
Definition: xeroot.hxx:94
std::shared_ptr< XclExpTablesManager > mxTablesMgr
Definition: xeroot.hxx:97
const sal_uInt16 EXC_ID_PALETTE
Definition: xlstyle.hxx:199
Stores all data for internal/external references (the link table).
Definition: xelink.hxx:145
XclExpSstRef mxSst
The export progress bar.
Definition: xeroot.hxx:83
unsigned char sal_uInt8
bool IsRemote() const
static OpCodeMapPtr CreateOpCodeMap(const css::uno::Sequence< const css::sheet::FormulaOpCodeMapEntry > &rMapping, bool bEnglish)
XclExpPTableMgrRef mxPTableMgr
Manager for filtered areas in all sheets.
Definition: xeroot.hxx:93
Sheet filter manager.
Definition: excrecds.hxx:432
Stores the data of all fonts used in the document.
Definition: xestyle.hxx:206
css::uno::Sequence< css::beans::NamedValue > GetEncryptionData() const
Definition: xeroot.cxx:335
void InitializeTable(SCTAB nScTab)
Is called when export filter starts to create data for a single sheet (all BIFF versions).
Definition: xeroot.cxx:266
XclExpObjectManager & GetObjectManager() const
Returns the drawing object manager.
Definition: xeroot.cxx:149
XclBiff GetBiff() const
Returns the current BIFF version of the importer/exporter.
Definition: xlroot.hxx:141
void Initialize()
Creates NAME records for built-in and user defined names.
Definition: xename.cxx:797
const sal_uInt16 EXC_ID_FORMATLIST
For internal use only.
Definition: xestyle.hxx:38
bool IsDocumentEncrypted() const
Definition: xeroot.cxx:300
XclExpPaletteRef mxPalette
The shared string table.
Definition: xeroot.hxx:84
SfxObjectShell * GetDocumentShell() const
Definition: document.hxx:1057
#define SAL_WARN(area, stream)
XclExpTabInfoRef mxTabInfo
Definition: xeroot.hxx:78
XclExpLinkMgrRef mxGlobLinkMgr
Internal defined names.
Definition: xeroot.hxx:89
virtual ~XclExpRootData() override
Definition: xeroot.cxx:67
XclExpProgressRef mxProgress
The formula compiler.
Definition: xeroot.hxx:81
bool isOptionEnabled(Option eOption) const
XclExpFmlaCompRef mxFmlaComp
The address converter.
Definition: xeroot.hxx:80
bool IsInGlobals() const
Returns the current Calc sheet index.
Definition: xlroot.hxx:160
XclExpXFBuffer & GetXFBuffer() const
Returns the cell formatting attributes buffer.
Definition: xeroot.cxx:125
XclExpFontBuffer & GetFontBuffer() const
Returns the font buffer.
Definition: xeroot.cxx:113
Provides export of the SST (shared string table) record.
Definition: xecontent.hxx:51
Access to global data for a filter object (imported or exported document) from other classes...
Definition: xlroot.hxx:127
SfxMedium & GetMedium() const
Returns the medium to import from.
Definition: xlroot.hxx:170
ScCompiler::OpCodeMapPtr mxOpCodeMap
Definition: xeroot.hxx:100
sal_Int16 SCTAB
Definition: types.hxx:22
XclExpLinkMgrRef mxLocLinkMgr
Global link manager for defined names.
Definition: xeroot.hxx:90