1*38d50f7bSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*38d50f7bSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*38d50f7bSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*38d50f7bSAndrew Rist * distributed with this work for additional information 6*38d50f7bSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*38d50f7bSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*38d50f7bSAndrew Rist * "License"); you may not use this file except in compliance 9*38d50f7bSAndrew Rist * with the License. You may obtain a copy of the License at 10*38d50f7bSAndrew Rist * 11*38d50f7bSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*38d50f7bSAndrew Rist * 13*38d50f7bSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*38d50f7bSAndrew Rist * software distributed under the License is distributed on an 15*38d50f7bSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*38d50f7bSAndrew Rist * KIND, either express or implied. See the License for the 17*38d50f7bSAndrew Rist * specific language governing permissions and limitations 18*38d50f7bSAndrew Rist * under the License. 19*38d50f7bSAndrew Rist * 20*38d50f7bSAndrew Rist *************************************************************/ 21*38d50f7bSAndrew Rist 22*38d50f7bSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef SC_IMP_OP_HXX 25cdf0e10cSrcweir #define SC_IMP_OP_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <tools/gen.hxx> 28cdf0e10cSrcweir #include "xiroot.hxx" 29cdf0e10cSrcweir #include "xistream.hxx" 30cdf0e10cSrcweir #include "xistyle.hxx" 31cdf0e10cSrcweir #include "flttypes.hxx" 32cdf0e10cSrcweir #include "namebuff.hxx" 33cdf0e10cSrcweir #include "root.hxx" 34cdf0e10cSrcweir #include "otlnbuff.hxx" 35cdf0e10cSrcweir #include "colrowst.hxx" 36cdf0e10cSrcweir #include "excdefs.hxx" 37cdf0e10cSrcweir 38cdf0e10cSrcweir 39cdf0e10cSrcweir class SfxItemSet; 40cdf0e10cSrcweir class SvStream; 41cdf0e10cSrcweir 42cdf0e10cSrcweir class ScFormulaCell; 43cdf0e10cSrcweir class SdrObject; 44cdf0e10cSrcweir class ScDocument; 45cdf0e10cSrcweir class ScToken; 46cdf0e10cSrcweir class _ScRangeListTabs; 47cdf0e10cSrcweir 48cdf0e10cSrcweir class ExcelToSc; 49cdf0e10cSrcweir 50cdf0e10cSrcweir 51cdf0e10cSrcweir class ImportTyp 52cdf0e10cSrcweir { 53cdf0e10cSrcweir protected: 54cdf0e10cSrcweir CharSet eQuellChar; // Quell-Zeichensatz 55cdf0e10cSrcweir ScDocument* pD; // Dokument 56cdf0e10cSrcweir 57cdf0e10cSrcweir public: 58cdf0e10cSrcweir ImportTyp( ScDocument*, CharSet eSrc ); 59cdf0e10cSrcweir virtual ~ImportTyp(); 60cdf0e10cSrcweir 61cdf0e10cSrcweir virtual FltError Read( void ); 62cdf0e10cSrcweir }; 63cdf0e10cSrcweir 64cdf0e10cSrcweir class XclImpOutlineDataBuffer : protected XclImpRoot 65cdf0e10cSrcweir { 66cdf0e10cSrcweir public: 67cdf0e10cSrcweir explicit XclImpOutlineDataBuffer( const XclImpRoot& rRoot, SCTAB nScTab ); 68cdf0e10cSrcweir virtual ~XclImpOutlineDataBuffer(); 69cdf0e10cSrcweir GetColRowBuff() const70cdf0e10cSrcweir inline XclImpColRowSettings* GetColRowBuff() const { return mxColRowBuff.get(); } GetColOutline() const71cdf0e10cSrcweir inline XclImpOutlineBuffer* GetColOutline() const { return mxColOutlineBuff.get(); } GetRowOutline() const72cdf0e10cSrcweir inline XclImpOutlineBuffer* GetRowOutline() const { return mxRowOutlineBuff.get(); } 73cdf0e10cSrcweir void Convert(); 74cdf0e10cSrcweir 75cdf0e10cSrcweir private: 76cdf0e10cSrcweir typedef ScfRef< XclImpOutlineBuffer > XclImpOutlineBfrRef; 77cdf0e10cSrcweir typedef ScfRef< XclImpColRowSettings > XclImpColRowSettRef; 78cdf0e10cSrcweir 79cdf0e10cSrcweir XclImpOutlineBfrRef mxColOutlineBuff; 80cdf0e10cSrcweir XclImpOutlineBfrRef mxRowOutlineBuff; 81cdf0e10cSrcweir XclImpColRowSettRef mxColRowBuff; 82cdf0e10cSrcweir SCTAB mnScTab; 83cdf0e10cSrcweir }; 84cdf0e10cSrcweir 85cdf0e10cSrcweir class ImportExcel : public ImportTyp, protected XclImpRoot 86cdf0e10cSrcweir { 87cdf0e10cSrcweir protected: 88cdf0e10cSrcweir static const double fExcToTwips; // Umrechnung 1/256 Zeichen -> Twips 89cdf0e10cSrcweir 90cdf0e10cSrcweir RootData* pExcRoot; 91cdf0e10cSrcweir 92cdf0e10cSrcweir XclImpStream maStrm; // input stream 93cdf0e10cSrcweir XclImpStream& aIn; // input stream 94cdf0e10cSrcweir 95cdf0e10cSrcweir ScfUInt32Vec maSheetOffsets; 96cdf0e10cSrcweir ScRange maScOleSize; /// Visible range if embedded. 97cdf0e10cSrcweir 98cdf0e10cSrcweir NameBuffer* pExtNameBuff; // ... externe Namen (Ind.-Basis=1) 99cdf0e10cSrcweir ExcelToSc* pFormConv; // Formel-Konverter 100cdf0e10cSrcweir 101cdf0e10cSrcweir XclImpOutlineBuffer* pColOutlineBuff; 102cdf0e10cSrcweir XclImpOutlineBuffer* pRowOutlineBuff; 103cdf0e10cSrcweir XclImpColRowSettings* pColRowBuff; // Col/Row-Einstellungen 1 Tabelle 104cdf0e10cSrcweir 105cdf0e10cSrcweir typedef ScfDelList< XclImpOutlineDataBuffer > XclImpOutlineListBuffer; 106cdf0e10cSrcweir XclImpOutlineListBuffer* pOutlineListBuffer; 107cdf0e10cSrcweir 108cdf0e10cSrcweir sal_Int16 mnLastRefIdx; 109cdf0e10cSrcweir sal_uInt16 mnIxfeIndex; /// Current XF identifier from IXFE record. 110cdf0e10cSrcweir bool mbBiff2HasXfs; /// Select XF formatting or direct formatting in BIFF2. 111cdf0e10cSrcweir bool mbBiff2HasXfsValid; /// False = mbBiff2HasXfs is undetermined yet. 112cdf0e10cSrcweir 113cdf0e10cSrcweir SCTAB nBdshtTab; // Counter fuer Boundsheet 114cdf0e10cSrcweir ScFormulaCell* pLastFormCell; // fuer String-Records 115cdf0e10cSrcweir 116cdf0e10cSrcweir sal_Bool bTabTruncated; // wenn Bereichsueberschreitung zum 117cdf0e10cSrcweir // Abschneiden von Zellen fuehrt 118cdf0e10cSrcweir 119cdf0e10cSrcweir // Record-Funktionen 120cdf0e10cSrcweir void ReadFileSharing(); 121cdf0e10cSrcweir 122cdf0e10cSrcweir sal_uInt16 ReadXFIndex( const ScAddress& rScPos, bool bBiff2 ); 123cdf0e10cSrcweir 124cdf0e10cSrcweir void ReadDimensions(); 125cdf0e10cSrcweir void ReadBlank(); 126cdf0e10cSrcweir void ReadInteger(); 127cdf0e10cSrcweir void ReadNumber(); 128cdf0e10cSrcweir void ReadLabel(); 129cdf0e10cSrcweir void ReadBoolErr(); 130cdf0e10cSrcweir void ReadRk(); 131cdf0e10cSrcweir 132cdf0e10cSrcweir void Window1(); 133cdf0e10cSrcweir void Formula25( void ); // 0x06 -> excform.cxx 134cdf0e10cSrcweir void Row25( void ); // 0x08 135cdf0e10cSrcweir void Bof2( void ); // 0x09 136cdf0e10cSrcweir void Eof( void ); // 0x0A 137cdf0e10cSrcweir void DocProtect( void ); // 0x12 138cdf0e10cSrcweir void SheetProtect( void ); // 0x12 Sheet Protection 139cdf0e10cSrcweir void DocPasssword( void ); // 0x13 document password 140cdf0e10cSrcweir void SheetPassword( void ); // 0x13 sheet password 141cdf0e10cSrcweir void Externsheet( void ); // 0x17 142cdf0e10cSrcweir void WinProtection( void ); // 0x19 143cdf0e10cSrcweir void Columndefault( void ); // 0x20 144cdf0e10cSrcweir void Array25( void ); // 0x21 145cdf0e10cSrcweir void Rec1904( void ); // 0x22 146cdf0e10cSrcweir void Externname25( void ); // 0x23 147cdf0e10cSrcweir void Colwidth( void ); // 0x24 148cdf0e10cSrcweir void Defrowheight2( void ); // 0x25 149cdf0e10cSrcweir // void Window1( void ); // 0x3D 150cdf0e10cSrcweir void Codepage( void ); // 0x42 151cdf0e10cSrcweir void Ixfe( void ); // 0x44 152cdf0e10cSrcweir void DefColWidth( void ); // 0x55 153cdf0e10cSrcweir void Builtinfmtcnt( void ); // 0x56 154cdf0e10cSrcweir void Colinfo( void ); // 0x7D 155cdf0e10cSrcweir void Wsbool( void ); // 0x81 156cdf0e10cSrcweir void Boundsheet( void ); // 0x85 157cdf0e10cSrcweir void Country( void ); // 0x8C 158cdf0e10cSrcweir void Hideobj( void ); // 0x8D 159cdf0e10cSrcweir void Bundleheader( void ); // 0x8F 160cdf0e10cSrcweir void Standardwidth( void ); // 0x99 161cdf0e10cSrcweir void Shrfmla( void ); // 0xBC 162cdf0e10cSrcweir void Mulrk( void ); // 0xBD 163cdf0e10cSrcweir void Mulblank( void ); // 0xBE 164cdf0e10cSrcweir void Rstring( void ); // 0xD6 165cdf0e10cSrcweir void Cellmerging( void ); // 0xE5 166cdf0e10cSrcweir void Olesize( void ); // 0xDE 167cdf0e10cSrcweir void ReadUsesElfs(); // 0x0160 168cdf0e10cSrcweir void Formula3( void ); // 0x0206 -> excform.cxx 169cdf0e10cSrcweir // 0x0207 -> 0x07 170cdf0e10cSrcweir void Row34( void ); // 0x0208 171cdf0e10cSrcweir void Bof3( void ); // 0x0209 172cdf0e10cSrcweir void Array34( void ); // 0x0221 173cdf0e10cSrcweir void Externname34( void ); // 0x0223 174cdf0e10cSrcweir void Defrowheight345( void ); // 0x0225 175cdf0e10cSrcweir void TableOp( void ); // 0x0236 176cdf0e10cSrcweir //void Rk( void ); // 0x027E -> 0x7E 177cdf0e10cSrcweir void Formula4( void ); // 0x0406 -> excform.cxx 178cdf0e10cSrcweir void Bof4( void ); // 0x0409 179cdf0e10cSrcweir void Bof5( void ); // 0x0809 180cdf0e10cSrcweir 181cdf0e10cSrcweir // --------------------------------------------------------------- 182cdf0e10cSrcweir void Formula( const XclAddress& rXclPos, 183cdf0e10cSrcweir sal_uInt16 nXF, sal_uInt16 nFormLen, double &rCurVal, sal_Bool bShrFmla ); 184cdf0e10cSrcweir // -> excform.cxx 185cdf0e10cSrcweir 186cdf0e10cSrcweir virtual void EndSheet( void ); 187cdf0e10cSrcweir void NeueTabelle( void ); 188cdf0e10cSrcweir const ScTokenArray* ErrorToFormula( sal_uInt8 bErrOrVal, sal_uInt8 nError, 189cdf0e10cSrcweir double& rVal ); 190cdf0e10cSrcweir 191cdf0e10cSrcweir virtual void AdjustRowHeight(); 192cdf0e10cSrcweir virtual void PostDocLoad( void ); 193cdf0e10cSrcweir 194cdf0e10cSrcweir public: 195cdf0e10cSrcweir ImportExcel( XclImpRootData& rImpData, SvStream& rStrm ); 196cdf0e10cSrcweir 197cdf0e10cSrcweir virtual ~ImportExcel( void ); 198cdf0e10cSrcweir 199cdf0e10cSrcweir virtual FltError Read( void ); 200cdf0e10cSrcweir }; 201cdf0e10cSrcweir 202cdf0e10cSrcweir #endif 203cdf0e10cSrcweir 204