| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef SC_IMP_OP_HXX |
| #define SC_IMP_OP_HXX |
| |
| #include <tools/gen.hxx> |
| #include "xiroot.hxx" |
| #include "xistream.hxx" |
| #include "xistyle.hxx" |
| #include "flttypes.hxx" |
| #include "namebuff.hxx" |
| #include "root.hxx" |
| #include "otlnbuff.hxx" |
| #include "colrowst.hxx" |
| #include "excdefs.hxx" |
| |
| |
| class SfxItemSet; |
| class SvStream; |
| |
| class ScFormulaCell; |
| class SdrObject; |
| class ScDocument; |
| class ScToken; |
| class _ScRangeListTabs; |
| |
| class ExcelToSc; |
| |
| |
| class ImportTyp |
| { |
| protected: |
| CharSet eQuellChar; // Quell-Zeichensatz |
| ScDocument* pD; // Dokument |
| |
| public: |
| ImportTyp( ScDocument*, CharSet eSrc ); |
| virtual ~ImportTyp(); |
| |
| virtual FltError Read( void ); |
| }; |
| |
| class XclImpOutlineDataBuffer : protected XclImpRoot |
| { |
| public: |
| explicit XclImpOutlineDataBuffer( const XclImpRoot& rRoot, SCTAB nScTab ); |
| virtual ~XclImpOutlineDataBuffer(); |
| |
| inline XclImpColRowSettings* GetColRowBuff() const { return mxColRowBuff.get(); } |
| inline XclImpOutlineBuffer* GetColOutline() const { return mxColOutlineBuff.get(); } |
| inline XclImpOutlineBuffer* GetRowOutline() const { return mxRowOutlineBuff.get(); } |
| void Convert(); |
| |
| private: |
| typedef ScfRef< XclImpOutlineBuffer > XclImpOutlineBfrRef; |
| typedef ScfRef< XclImpColRowSettings > XclImpColRowSettRef; |
| |
| XclImpOutlineBfrRef mxColOutlineBuff; |
| XclImpOutlineBfrRef mxRowOutlineBuff; |
| XclImpColRowSettRef mxColRowBuff; |
| SCTAB mnScTab; |
| }; |
| |
| class ImportExcel : public ImportTyp, protected XclImpRoot |
| { |
| protected: |
| static const double fExcToTwips; // Umrechnung 1/256 Zeichen -> Twips |
| |
| RootData* pExcRoot; |
| |
| XclImpStream maStrm; // input stream |
| XclImpStream& aIn; // input stream |
| |
| ScfUInt32Vec maSheetOffsets; |
| ScRange maScOleSize; /// Visible range if embedded. |
| |
| NameBuffer* pExtNameBuff; // ... externe Namen (Ind.-Basis=1) |
| ExcelToSc* pFormConv; // Formel-Konverter |
| |
| XclImpOutlineBuffer* pColOutlineBuff; |
| XclImpOutlineBuffer* pRowOutlineBuff; |
| XclImpColRowSettings* pColRowBuff; // Col/Row-Einstellungen 1 Tabelle |
| |
| typedef ScfDelList< XclImpOutlineDataBuffer > XclImpOutlineListBuffer; |
| XclImpOutlineListBuffer* pOutlineListBuffer; |
| |
| sal_Int16 mnLastRefIdx; |
| sal_uInt16 mnIxfeIndex; /// Current XF identifier from IXFE record. |
| bool mbBiff2HasXfs; /// Select XF formatting or direct formatting in BIFF2. |
| bool mbBiff2HasXfsValid; /// False = mbBiff2HasXfs is undetermined yet. |
| |
| SCTAB nBdshtTab; // Counter fuer Boundsheet |
| ScFormulaCell* pLastFormCell; // fuer String-Records |
| |
| sal_Bool bTabTruncated; // wenn Bereichsueberschreitung zum |
| // Abschneiden von Zellen fuehrt |
| |
| // Record-Funktionen |
| void ReadFileSharing(); |
| |
| sal_uInt16 ReadXFIndex( const ScAddress& rScPos, bool bBiff2 ); |
| |
| void ReadDimensions(); |
| void ReadBlank(); |
| void ReadInteger(); |
| void ReadNumber(); |
| void ReadLabel(); |
| void ReadBoolErr(); |
| void ReadRk(); |
| |
| void Window1(); |
| void Formula25( void ); // 0x06 -> excform.cxx |
| void Row25( void ); // 0x08 |
| void Bof2( void ); // 0x09 |
| void Eof( void ); // 0x0A |
| void DocProtect( void ); // 0x12 |
| void SheetProtect( void ); // 0x12 Sheet Protection |
| void DocPasssword( void ); // 0x13 document password |
| void SheetPassword( void ); // 0x13 sheet password |
| void Externsheet( void ); // 0x17 |
| void WinProtection( void ); // 0x19 |
| void Columndefault( void ); // 0x20 |
| void Array25( void ); // 0x21 |
| void Rec1904( void ); // 0x22 |
| void Externname25( void ); // 0x23 |
| void Colwidth( void ); // 0x24 |
| void Defrowheight2( void ); // 0x25 |
| // void Window1( void ); // 0x3D |
| void Codepage( void ); // 0x42 |
| void Ixfe( void ); // 0x44 |
| void DefColWidth( void ); // 0x55 |
| void Builtinfmtcnt( void ); // 0x56 |
| void Colinfo( void ); // 0x7D |
| void Wsbool( void ); // 0x81 |
| void Boundsheet( void ); // 0x85 |
| void Country( void ); // 0x8C |
| void Hideobj( void ); // 0x8D |
| void Bundleheader( void ); // 0x8F |
| void Standardwidth( void ); // 0x99 |
| void Shrfmla( void ); // 0xBC |
| void Mulrk( void ); // 0xBD |
| void Mulblank( void ); // 0xBE |
| void Rstring( void ); // 0xD6 |
| void Cellmerging( void ); // 0xE5 |
| void Olesize( void ); // 0xDE |
| void ReadUsesElfs(); // 0x0160 |
| void Formula3( void ); // 0x0206 -> excform.cxx |
| // 0x0207 -> 0x07 |
| void Row34( void ); // 0x0208 |
| void Bof3( void ); // 0x0209 |
| void Array34( void ); // 0x0221 |
| void Externname34( void ); // 0x0223 |
| void Defrowheight345( void ); // 0x0225 |
| void TableOp( void ); // 0x0236 |
| //void Rk( void ); // 0x027E -> 0x7E |
| void Formula4( void ); // 0x0406 -> excform.cxx |
| void Bof4( void ); // 0x0409 |
| void Bof5( void ); // 0x0809 |
| |
| // --------------------------------------------------------------- |
| void Formula( const XclAddress& rXclPos, |
| sal_uInt16 nXF, sal_uInt16 nFormLen, double &rCurVal, sal_Bool bShrFmla ); |
| // -> excform.cxx |
| |
| virtual void EndSheet( void ); |
| void NeueTabelle( void ); |
| const ScTokenArray* ErrorToFormula( sal_uInt8 bErrOrVal, sal_uInt8 nError, |
| double& rVal ); |
| |
| virtual void AdjustRowHeight(); |
| virtual void PostDocLoad( void ); |
| |
| public: |
| ImportExcel( XclImpRootData& rImpData, SvStream& rStrm ); |
| |
| virtual ~ImportExcel( void ); |
| |
| virtual FltError Read( void ); |
| }; |
| |
| #endif |
| |