xref: /trunk/main/sc/source/filter/inc/imp_op.hxx (revision 38d50f7b)
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