Line data Source code
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 : #ifndef OOX_XLS_BIFFHELPER_HXX
21 : #define OOX_XLS_BIFFHELPER_HXX
22 :
23 : #include "oox/helper/binarystreambase.hxx"
24 :
25 : namespace oox { class SequenceInputStream; }
26 :
27 : namespace oox {
28 : namespace xls {
29 :
30 : class BiffInputStream;
31 :
32 : // BIFF12 record identifiers ==================================================
33 :
34 : const sal_Int32 BIFF12_ID_ARRAY = 0x01AA;
35 : const sal_Int32 BIFF12_ID_AUTOFILTER = 0x00A1;
36 : const sal_Int32 BIFF12_ID_AUTOSORTSCOPE = 0x01CB;
37 : const sal_Int32 BIFF12_ID_BINARYINDEXBLOCK = 0x002A;
38 : const sal_Int32 BIFF12_ID_BINARYINDEXROWS = 0x0028;
39 : const sal_Int32 BIFF12_ID_BOOKVIEWS = 0x0087;
40 : const sal_Int32 BIFF12_ID_BORDER = 0x002E;
41 : const sal_Int32 BIFF12_ID_BORDERS = 0x0265;
42 : const sal_Int32 BIFF12_ID_BRK = 0x018C;
43 : const sal_Int32 BIFF12_ID_CALCPR = 0x009D;
44 : const sal_Int32 BIFF12_ID_CELL_BLANK = 0x0001;
45 : const sal_Int32 BIFF12_ID_CELL_BOOL = 0x0004;
46 : const sal_Int32 BIFF12_ID_CELL_DOUBLE = 0x0005;
47 : const sal_Int32 BIFF12_ID_CELL_ERROR = 0x0003;
48 : const sal_Int32 BIFF12_ID_CELL_RK = 0x0002;
49 : const sal_Int32 BIFF12_ID_CELL_RSTRING = 0x003E;
50 : const sal_Int32 BIFF12_ID_CELL_SI = 0x0007;
51 : const sal_Int32 BIFF12_ID_CELL_STRING = 0x0006;
52 : const sal_Int32 BIFF12_ID_CELLSTYLE = 0x0030;
53 : const sal_Int32 BIFF12_ID_CELLSTYLES = 0x026B;
54 : const sal_Int32 BIFF12_ID_CELLSTYLEXFS = 0x0272;
55 : const sal_Int32 BIFF12_ID_CELLXFS = 0x0269;
56 : const sal_Int32 BIFF12_ID_CFCOLOR = 0x0234;
57 : const sal_Int32 BIFF12_ID_CFRULE = 0x01CF;
58 : const sal_Int32 BIFF12_ID_CHARTPAGESETUP = 0x028C;
59 : const sal_Int32 BIFF12_ID_CHARTPROTECTION = 0x029D;
60 : const sal_Int32 BIFF12_ID_CHARTSHEETPR = 0x028B;
61 : const sal_Int32 BIFF12_ID_CHARTSHEETVIEW = 0x008D;
62 : const sal_Int32 BIFF12_ID_CHARTSHEETVIEWS = 0x008B;
63 : const sal_Int32 BIFF12_ID_COL = 0x003C;
64 : const sal_Int32 BIFF12_ID_COLBREAKS = 0x018A;
65 : const sal_Int32 BIFF12_ID_COLOR = 0x023C;
66 : const sal_Int32 BIFF12_ID_COLORS = 0x01D9;
67 : const sal_Int32 BIFF12_ID_COLORSCALE = 0x01D5;
68 : const sal_Int32 BIFF12_ID_COLS = 0x0186;
69 : const sal_Int32 BIFF12_ID_COMMENT = 0x027B;
70 : const sal_Int32 BIFF12_ID_COMMENTAUTHOR = 0x0278;
71 : const sal_Int32 BIFF12_ID_COMMENTAUTHORS = 0x0276;
72 : const sal_Int32 BIFF12_ID_COMMENTLIST = 0x0279;
73 : const sal_Int32 BIFF12_ID_COMMENTS = 0x0274;
74 : const sal_Int32 BIFF12_ID_COMMENTTEXT = 0x027D;
75 : const sal_Int32 BIFF12_ID_CONDFORMATTING = 0x01CD;
76 : const sal_Int32 BIFF12_ID_CONNECTION = 0x00C9;
77 : const sal_Int32 BIFF12_ID_CONNECTIONS = 0x01AD;
78 : const sal_Int32 BIFF12_ID_CONTROL = 0x0284;
79 : const sal_Int32 BIFF12_ID_CONTROLS = 0x0283;
80 : const sal_Int32 BIFF12_ID_CUSTOMCHARTVIEW = 0x028F;
81 : const sal_Int32 BIFF12_ID_CUSTOMCHARTVIEWS = 0x028D;
82 : const sal_Int32 BIFF12_ID_CUSTOMFILTER = 0x00AE;
83 : const sal_Int32 BIFF12_ID_CUSTOMFILTERS = 0x00AC;
84 : const sal_Int32 BIFF12_ID_CUSTOMSHEETVIEW = 0x01A7;
85 : const sal_Int32 BIFF12_ID_CUSTOMSHEETVIEWS = 0x01A6;
86 : const sal_Int32 BIFF12_ID_CUSTOMWORKBOOKVIEW= 0x018D;
87 : const sal_Int32 BIFF12_ID_DATABAR = 0x01D3;
88 : const sal_Int32 BIFF12_ID_DATATABLE = 0x01AC;
89 : const sal_Int32 BIFF12_ID_DATAVALIDATION = 0x0040;
90 : const sal_Int32 BIFF12_ID_DATAVALIDATIONS = 0x023D;
91 : const sal_Int32 BIFF12_ID_DDEITEMVALUES = 0x0242;
92 : const sal_Int32 BIFF12_ID_DDEITEM_BOOL = 0x0248;
93 : const sal_Int32 BIFF12_ID_DDEITEM_DOUBLE = 0x0244;
94 : const sal_Int32 BIFF12_ID_DDEITEM_ERROR = 0x0245;
95 : const sal_Int32 BIFF12_ID_DDEITEM_STRING = 0x0246;
96 : const sal_Int32 BIFF12_ID_DEFINEDNAME = 0x0027;
97 : const sal_Int32 BIFF12_ID_DIMENSION = 0x0094;
98 : const sal_Int32 BIFF12_ID_DISCRETEFILTER = 0x00A7;
99 : const sal_Int32 BIFF12_ID_DISCRETEFILTERS = 0x00A5;
100 : const sal_Int32 BIFF12_ID_DRAWING = 0x0226;
101 : const sal_Int32 BIFF12_ID_DXF = 0x01FB;
102 : const sal_Int32 BIFF12_ID_DXFS = 0x01F9;
103 : const sal_Int32 BIFF12_ID_EXTCELL_BLANK = 0x016F;
104 : const sal_Int32 BIFF12_ID_EXTCELL_BOOL = 0x0171;
105 : const sal_Int32 BIFF12_ID_EXTCELL_DOUBLE = 0x0170;
106 : const sal_Int32 BIFF12_ID_EXTCELL_ERROR = 0x0172;
107 : const sal_Int32 BIFF12_ID_EXTCELL_STRING = 0x0173;
108 : const sal_Int32 BIFF12_ID_EXTERNALADDIN = 0x029B;
109 : const sal_Int32 BIFF12_ID_EXTERNALBOOK = 0x0168;
110 : const sal_Int32 BIFF12_ID_EXTERNALNAME = 0x0241;
111 : const sal_Int32 BIFF12_ID_EXTERNALREF = 0x0163;
112 : const sal_Int32 BIFF12_ID_EXTERNALREFS = 0x0161;
113 : const sal_Int32 BIFF12_ID_EXTERNALSELF = 0x0165;
114 : const sal_Int32 BIFF12_ID_EXTERNALSAME = 0x0166;
115 : const sal_Int32 BIFF12_ID_EXTERNALSHEETS = 0x016A;
116 : const sal_Int32 BIFF12_ID_EXTROW = 0x016E;
117 : const sal_Int32 BIFF12_ID_EXTSHEETDATA = 0x016B;
118 : const sal_Int32 BIFF12_ID_EXTERNALNAMEFLAGS = 0x024A;
119 : const sal_Int32 BIFF12_ID_EXTSHEETNAMES = 0x0167;
120 : const sal_Int32 BIFF12_ID_FILESHARING = 0x0224;
121 : const sal_Int32 BIFF12_ID_FILEVERSION = 0x0080;
122 : const sal_Int32 BIFF12_ID_FILL = 0x002D;
123 : const sal_Int32 BIFF12_ID_FILLS = 0x025B;
124 : const sal_Int32 BIFF12_ID_FILTERCOLUMN = 0x00A3;
125 : const sal_Int32 BIFF12_ID_FONT = 0x002B;
126 : const sal_Int32 BIFF12_ID_FONTS = 0x0263;
127 : const sal_Int32 BIFF12_ID_FORMULA_STRING = 0x0008;
128 : const sal_Int32 BIFF12_ID_FORMULA_DOUBLE = 0x0009;
129 : const sal_Int32 BIFF12_ID_FORMULA_BOOL = 0x000A;
130 : const sal_Int32 BIFF12_ID_FORMULA_ERROR = 0x000B;
131 : const sal_Int32 BIFF12_ID_FUNCTIONGROUP = 0x0299;
132 : const sal_Int32 BIFF12_ID_FUNCTIONGROUPS = 0x0298;
133 : const sal_Int32 BIFF12_ID_HEADERFOOTER = 0x01DF;
134 : const sal_Int32 BIFF12_ID_HYPERLINK = 0x01EE;
135 : const sal_Int32 BIFF12_ID_ICONSET = 0x01D1;
136 : const sal_Int32 BIFF12_ID_INDEXEDCOLORS = 0x0235;
137 : const sal_Int32 BIFF12_ID_INPUTCELLS = 0x01F8;
138 : const sal_Int32 BIFF12_ID_LEGACYDRAWING = 0x0227;
139 : const sal_Int32 BIFF12_ID_MERGECELL = 0x00B0;
140 : const sal_Int32 BIFF12_ID_MERGECELLS = 0x00B1;
141 : const sal_Int32 BIFF12_ID_MRUCOLORS = 0x0239;
142 : const sal_Int32 BIFF12_ID_MULTCELL_BLANK = 0x000C;
143 : const sal_Int32 BIFF12_ID_MULTCELL_BOOL = 0x000F;
144 : const sal_Int32 BIFF12_ID_MULTCELL_DOUBLE = 0x0010;
145 : const sal_Int32 BIFF12_ID_MULTCELL_ERROR = 0x000E;
146 : const sal_Int32 BIFF12_ID_MULTCELL_RK = 0x000D;
147 : const sal_Int32 BIFF12_ID_MULTCELL_RSTRING = 0x003D;
148 : const sal_Int32 BIFF12_ID_MULTCELL_SI = 0x0012;
149 : const sal_Int32 BIFF12_ID_MULTCELL_STRING = 0x0011;
150 : const sal_Int32 BIFF12_ID_NUMFMT = 0x002C;
151 : const sal_Int32 BIFF12_ID_NUMFMTS = 0x0267;
152 : const sal_Int32 BIFF12_ID_OLEOBJECT = 0x027F;
153 : const sal_Int32 BIFF12_ID_OLEOBJECTS = 0x027E;
154 : const sal_Int32 BIFF12_ID_OLESIZE = 0x0225;
155 : const sal_Int32 BIFF12_ID_PAGEMARGINS = 0x01DC;
156 : const sal_Int32 BIFF12_ID_PAGESETUP = 0x01DE;
157 : const sal_Int32 BIFF12_ID_PANE = 0x0097;
158 : const sal_Int32 BIFF12_ID_PCDEFINITION = 0x00B3;
159 : const sal_Int32 BIFF12_ID_PCDFDISCRETEPR = 0x00E1;
160 : const sal_Int32 BIFF12_ID_PCDFGROUPITEMS = 0x00DD;
161 : const sal_Int32 BIFF12_ID_PCDFIELD = 0x00B7;
162 : const sal_Int32 BIFF12_ID_PCDFIELDGROUP = 0x00DB;
163 : const sal_Int32 BIFF12_ID_PCDFIELDS = 0x00B5;
164 : const sal_Int32 BIFF12_ID_PCDFRANGEPR = 0x00DF;
165 : const sal_Int32 BIFF12_ID_PCDFSHAREDITEMS = 0x00BD;
166 : const sal_Int32 BIFF12_ID_PCDSHEETSOURCE = 0x00BB;
167 : const sal_Int32 BIFF12_ID_PCDSOURCE = 0x00B9;
168 : const sal_Int32 BIFF12_ID_PCITEM_ARRAY = 0x00BF;
169 : const sal_Int32 BIFF12_ID_PCITEM_BOOL = 0x0016;
170 : const sal_Int32 BIFF12_ID_PCITEM_DATE = 0x0019;
171 : const sal_Int32 BIFF12_ID_PCITEM_DOUBLE = 0x0015;
172 : const sal_Int32 BIFF12_ID_PCITEM_ERROR = 0x0017;
173 : const sal_Int32 BIFF12_ID_PCITEM_INDEX = 0x001A;
174 : const sal_Int32 BIFF12_ID_PCITEM_MISSING = 0x0014;
175 : const sal_Int32 BIFF12_ID_PCITEM_STRING = 0x0018;
176 : const sal_Int32 BIFF12_ID_PCITEMA_BOOL = 0x001D;
177 : const sal_Int32 BIFF12_ID_PCITEMA_DATE = 0x0020;
178 : const sal_Int32 BIFF12_ID_PCITEMA_DOUBLE = 0x001C;
179 : const sal_Int32 BIFF12_ID_PCITEMA_ERROR = 0x001E;
180 : const sal_Int32 BIFF12_ID_PCITEMA_MISSING = 0x001B;
181 : const sal_Int32 BIFF12_ID_PCITEMA_STRING = 0x001F;
182 : const sal_Int32 BIFF12_ID_PCRECORD = 0x0021;
183 : const sal_Int32 BIFF12_ID_PCRECORDDT = 0x0022;
184 : const sal_Int32 BIFF12_ID_PCRECORDS = 0x00C1;
185 : const sal_Int32 BIFF12_ID_PHONETICPR = 0x0219;
186 : const sal_Int32 BIFF12_ID_PICTURE = 0x0232;
187 : const sal_Int32 BIFF12_ID_PIVOTAREA = 0x00F7;
188 : const sal_Int32 BIFF12_ID_PIVOTCACHE = 0x0182;
189 : const sal_Int32 BIFF12_ID_PIVOTCACHES = 0x0180;
190 : const sal_Int32 BIFF12_ID_PRINTOPTIONS = 0x01DD;
191 : const sal_Int32 BIFF12_ID_PTCOLFIELDS = 0x0137;
192 : const sal_Int32 BIFF12_ID_PTDATAFIELD = 0x0125;
193 : const sal_Int32 BIFF12_ID_PTDATAFIELDS = 0x0127;
194 : const sal_Int32 BIFF12_ID_PTDEFINITION = 0x0118;
195 : const sal_Int32 BIFF12_ID_PTFIELD = 0x011D;
196 : const sal_Int32 BIFF12_ID_PTFIELDS = 0x011F;
197 : const sal_Int32 BIFF12_ID_PTFILTER = 0x0259;
198 : const sal_Int32 BIFF12_ID_PTFILTERS = 0x0257;
199 : const sal_Int32 BIFF12_ID_PTFITEM = 0x011A;
200 : const sal_Int32 BIFF12_ID_PTFITEMS = 0x011B;
201 : const sal_Int32 BIFF12_ID_PTLOCATION = 0x013A;
202 : const sal_Int32 BIFF12_ID_PTPAGEFIELD = 0x0121;
203 : const sal_Int32 BIFF12_ID_PTPAGEFIELDS = 0x0123;
204 : const sal_Int32 BIFF12_ID_PTREFERENCE = 0x00FB;
205 : const sal_Int32 BIFF12_ID_PTREFERENCEITEM = 0x017E;
206 : const sal_Int32 BIFF12_ID_PTREFERENCES = 0x00F9;
207 : const sal_Int32 BIFF12_ID_PTROWFIELDS = 0x0135;
208 : const sal_Int32 BIFF12_ID_QUERYTABLE = 0x01BF;
209 : const sal_Int32 BIFF12_ID_QUERYTABLEREFRESH = 0x01C1;
210 : const sal_Int32 BIFF12_ID_RGBCOLOR = 0x01DB;
211 : const sal_Int32 BIFF12_ID_ROW = 0x0000;
212 : const sal_Int32 BIFF12_ID_ROWBREAKS = 0x0188;
213 : const sal_Int32 BIFF12_ID_SCENARIO = 0x01F6;
214 : const sal_Int32 BIFF12_ID_SCENARIOS = 0x01F4;
215 : const sal_Int32 BIFF12_ID_SELECTION = 0x0098;
216 : const sal_Int32 BIFF12_ID_SHAREDFMLA = 0x01AB;
217 : const sal_Int32 BIFF12_ID_SHEET = 0x009C;
218 : const sal_Int32 BIFF12_ID_SHEETDATA = 0x0091;
219 : const sal_Int32 BIFF12_ID_SHEETFORMATPR = 0x01E5;
220 : const sal_Int32 BIFF12_ID_SHEETPR = 0x0093;
221 : const sal_Int32 BIFF12_ID_SHEETPROTECTION = 0x0217;
222 : const sal_Int32 BIFF12_ID_SHEETS = 0x008F;
223 : const sal_Int32 BIFF12_ID_SHEETVIEW = 0x0089;
224 : const sal_Int32 BIFF12_ID_SHEETVIEWS = 0x0085;
225 : const sal_Int32 BIFF12_ID_SI = 0x0013;
226 : const sal_Int32 BIFF12_ID_SST = 0x009F;
227 : const sal_Int32 BIFF12_ID_STYLESHEET = 0x0116;
228 : const sal_Int32 BIFF12_ID_TABLE = 0x0157;
229 : const sal_Int32 BIFF12_ID_TABLEPART = 0x0295;
230 : const sal_Int32 BIFF12_ID_TABLEPARTS = 0x0294;
231 : const sal_Int32 BIFF12_ID_TABLESTYLEINFO = 0x0201;
232 : const sal_Int32 BIFF12_ID_TABLESTYLES = 0x01FC;
233 : const sal_Int32 BIFF12_ID_TOP10FILTER = 0x00AA;
234 : const sal_Int32 BIFF12_ID_VOLTYPE = 0x0204;
235 : const sal_Int32 BIFF12_ID_VOLTYPEMAIN = 0x0206;
236 : const sal_Int32 BIFF12_ID_VOLTYPES = 0x0202;
237 : const sal_Int32 BIFF12_ID_VOLTYPESTP = 0x020A;
238 : const sal_Int32 BIFF12_ID_VOLTYPETR = 0x020B;
239 : const sal_Int32 BIFF12_ID_WEBPR = 0x0105;
240 : const sal_Int32 BIFF12_ID_WEBPRTABLES = 0x0107;
241 : const sal_Int32 BIFF12_ID_WORKBOOK = 0x0083;
242 : const sal_Int32 BIFF12_ID_WORKBOOKPR = 0x0099;
243 : const sal_Int32 BIFF12_ID_WORKBOOKVIEW = 0x009E;
244 : const sal_Int32 BIFF12_ID_WORKSHEET = 0x0081;
245 : const sal_Int32 BIFF12_ID_XF = 0x002F;
246 :
247 : // BIFF2-BIFF8 record identifiers =============================================
248 :
249 : /** An enumeration for all binary Excel file format types (BIFF types). */
250 : enum BiffType
251 : {
252 : BIFF2 = 0, /// MS Excel 2.1.
253 : BIFF3, /// MS Excel 3.0.
254 : BIFF4, /// MS Excel 4.0.
255 : BIFF5, /// MS Excel 5.0, MS Excel 7.0 (95).
256 : BIFF8, /// MS Excel 8.0 (97), 9.0 (2000), 10.0 (XP), 11.0 (2003).
257 : BIFF_UNKNOWN /// Unknown BIFF version.
258 : };
259 :
260 : const sal_uInt16 BIFF2_MAXRECSIZE = 2080;
261 : const sal_uInt16 BIFF8_MAXRECSIZE = 8224;
262 :
263 : // record identifiers ---------------------------------------------------------
264 :
265 : const sal_uInt16 BIFF2_ID_ARRAY = 0x0021;
266 : const sal_uInt16 BIFF3_ID_ARRAY = 0x0221;
267 : const sal_uInt16 BIFF_ID_AUTOFILTER = 0x009D;
268 : const sal_uInt16 BIFF2_ID_BLANK = 0x0001;
269 : const sal_uInt16 BIFF3_ID_BLANK = 0x0201;
270 : const sal_uInt16 BIFF2_ID_BOF = 0x0009;
271 : const sal_uInt16 BIFF3_ID_BOF = 0x0209;
272 : const sal_uInt16 BIFF4_ID_BOF = 0x0409;
273 : const sal_uInt16 BIFF5_ID_BOF = 0x0809;
274 : const sal_uInt16 BIFF_ID_BOOKBOOL = 0x00DA;
275 : const sal_uInt16 BIFF_ID_BOOKEXT = 0x0863;
276 : const sal_uInt16 BIFF2_ID_BOOLERR = 0x0005;
277 : const sal_uInt16 BIFF3_ID_BOOLERR = 0x0205;
278 : const sal_uInt16 BIFF_ID_BOTTOMMARGIN = 0x0029;
279 : const sal_uInt16 BIFF_ID_CALCCOUNT = 0x000C;
280 : const sal_uInt16 BIFF_ID_CALCMODE = 0x000D;
281 : const sal_uInt16 BIFF_ID_CFHEADER = 0x01B0;
282 : const sal_uInt16 BIFF_ID_CFRULE = 0x01B1;
283 : const sal_uInt16 BIFF_ID_CFRULE12 = 0x087A;
284 : const sal_uInt16 BIFF_ID_CFRULEEXT = 0x087B;
285 : const sal_uInt16 BIFF_ID_CH3DDATAFORMAT = 0x105F;
286 : const sal_uInt16 BIFF_ID_CHAREA = 0x101A;
287 : const sal_uInt16 BIFF_ID_CHAREAFORMAT = 0x100A;
288 : const sal_uInt16 BIFF_ID_CHATTACHEDLABEL = 0x100C;
289 : const sal_uInt16 BIFF_ID_CHAXESSET = 0x1041;
290 : const sal_uInt16 BIFF_ID_CHAXIS = 0x101D;
291 : const sal_uInt16 BIFF_ID_CHAXISLINE = 0x1021;
292 : const sal_uInt16 BIFF_ID_CHBAR = 0x1017;
293 : const sal_uInt16 BIFF_ID_CHBEGIN = 0x1033;
294 : const sal_uInt16 BIFF_ID_CHCHART = 0x1002;
295 : const sal_uInt16 BIFF_ID_CHCHART3D = 0x103A;
296 : const sal_uInt16 BIFF_ID_CHCHARTLINE = 0x101C;
297 : const sal_uInt16 BIFF_ID_CHDATAFORMAT = 0x1006;
298 : const sal_uInt16 BIFF_ID_CHDATERANGE = 0x1062;
299 : const sal_uInt16 BIFF_ID_CHDEFAULTTEXT = 0x1024;
300 : const sal_uInt16 BIFF_ID_CHDROPBAR = 0x103D;
301 : const sal_uInt16 BIFF_ID_CHECKCOMPAT = 0x088C;
302 : const sal_uInt16 BIFF_ID_CHEND = 0x1034;
303 : const sal_uInt16 BIFF_ID_CHESCHERFORMAT = 0x1066;
304 : const sal_uInt16 BIFF_ID_CHFONT = 0x1026;
305 : const sal_uInt16 BIFF_ID_CHFORMAT = 0x104E;
306 : const sal_uInt16 BIFF_ID_CHFORMATRUNS = 0x1050;
307 : const sal_uInt16 BIFF_ID_CHFRAME = 0x1032;
308 : const sal_uInt16 BIFF_ID_CHFRAMEPOS = 0x104F;
309 : const sal_uInt16 BIFF_ID_CHFRBLOCKBEGIN = 0x0852;
310 : const sal_uInt16 BIFF_ID_CHFRBLOCKEND = 0x0853;
311 : const sal_uInt16 BIFF_ID_CHFRCATEGORYPROPS = 0x0856;
312 : const sal_uInt16 BIFF_ID_CHFREXTPROPS = 0x089E;
313 : const sal_uInt16 BIFF_ID_CHFREXTPROPSCONT = 0x089F;
314 : const sal_uInt16 BIFF_ID_CHFRINFO = 0x0850;
315 : const sal_uInt16 BIFF_ID_CHFRLABELPROPS = 0x086B;
316 : const sal_uInt16 BIFF_ID_CHFRLAYOUT = 0x089D;
317 : const sal_uInt16 BIFF_ID_CHFRPLOTAREALAYOUT = 0x08A7;
318 : const sal_uInt16 BIFF_ID_CHFRSHAPEPROPS = 0x08A4;
319 : const sal_uInt16 BIFF_ID_CHFRTEXTPROPS = 0x08A5;
320 : const sal_uInt16 BIFF_ID_CHFRUNITPROPS = 0x0857;
321 : const sal_uInt16 BIFF_ID_CHFRWRAPPER = 0x0851;
322 : const sal_uInt16 BIFF_ID_CHLABELRANGE = 0x1020;
323 : const sal_uInt16 BIFF_ID_CHLEGEND = 0x1015;
324 : const sal_uInt16 BIFF_ID_CHLINE = 0x1018;
325 : const sal_uInt16 BIFF_ID_CHLINEFORMAT = 0x1007;
326 : const sal_uInt16 BIFF_ID_CHMARKERFORMAT = 0x1009;
327 : const sal_uInt16 BIFF_ID_CHOBJECTLINK = 0x1027;
328 : const sal_uInt16 BIFF_ID_CHPICFORMAT = 0x103C;
329 : const sal_uInt16 BIFF_ID_CHPIE = 0x1019;
330 : const sal_uInt16 BIFF_ID_CHPIEEXT = 0x1061;
331 : const sal_uInt16 BIFF_ID_CHPIEFORMAT = 0x100B;
332 : const sal_uInt16 BIFF_ID_CHPIVOTFLAGS = 0x0859;
333 : const sal_uInt16 BIFF5_ID_CHPIVOTREF = 0x1048;
334 : const sal_uInt16 BIFF8_ID_CHPIVOTREF = 0x0858;
335 : const sal_uInt16 BIFF_ID_CHPLOTFRAME = 0x1035;
336 : const sal_uInt16 BIFF_ID_CHPLOTGROWTH = 0x1064;
337 : const sal_uInt16 BIFF_ID_CHPROPERTIES = 0x1044;
338 : const sal_uInt16 BIFF_ID_CHRADARLINE = 0x103E;
339 : const sal_uInt16 BIFF_ID_CHRADARAREA = 0x1040;
340 : const sal_uInt16 BIFF_ID_CHSCATTER = 0x101B;
341 : const sal_uInt16 BIFF_ID_CHSERERRORBAR = 0x105B;
342 : const sal_uInt16 BIFF_ID_CHSERGROUP = 0x1045;
343 : const sal_uInt16 BIFF_ID_CHSERIES = 0x1003;
344 : const sal_uInt16 BIFF_ID_CHSERIESFORMAT = 0x105D;
345 : const sal_uInt16 BIFF_ID_CHSERPARENT = 0x104A;
346 : const sal_uInt16 BIFF_ID_CHSERTRENDLINE = 0x104B;
347 : const sal_uInt16 BIFF_ID_CHSOURCELINK = 0x1051;
348 : const sal_uInt16 BIFF_ID_CHSTRING = 0x100D;
349 : const sal_uInt16 BIFF_ID_CHSURFACE = 0x103F;
350 : const sal_uInt16 BIFF_ID_CHTEXT = 0x1025;
351 : const sal_uInt16 BIFF_ID_CHTICK = 0x101E;
352 : const sal_uInt16 BIFF_ID_CHTYPEGROUP = 0x1014;
353 : const sal_uInt16 BIFF_ID_CHVALUERANGE = 0x101F;
354 : const sal_uInt16 BIFF_ID_CODENAME = 0x01BA;
355 : const sal_uInt16 BIFF_ID_CODEPAGE = 0x0042;
356 : const sal_uInt16 BIFF_ID_COLINFO = 0x007D;
357 : const sal_uInt16 BIFF_ID_COLUMNDEFAULT = 0x0020;
358 : const sal_uInt16 BIFF_ID_COLWIDTH = 0x0024;
359 : const sal_uInt16 BIFF_ID_COMPRESSPICS = 0x089B;
360 : const sal_uInt16 BIFF_ID_CONNECTION = 0x0876;
361 : const sal_uInt16 BIFF_ID_CONT = 0x003C;
362 : const sal_uInt16 BIFF_ID_COORDLIST = 0x00A9;
363 : const sal_uInt16 BIFF_ID_COUNTRY = 0x008C;
364 : const sal_uInt16 BIFF_ID_CRN = 0x005A;
365 : const sal_uInt16 BIFF2_ID_DATATABLE = 0x0036;
366 : const sal_uInt16 BIFF3_ID_DATATABLE = 0x0236;
367 : const sal_uInt16 BIFF2_ID_DATATABLE2 = 0x0037;
368 : const sal_uInt16 BIFF_ID_DATAVALIDATION = 0x01BE;
369 : const sal_uInt16 BIFF_ID_DATAVALIDATIONS = 0x01B2;
370 : const sal_uInt16 BIFF_ID_DATEMODE = 0x0022;
371 : const sal_uInt16 BIFF_ID_DBCELL = 0x00D7;
372 : const sal_uInt16 BIFF_ID_DBQUERY = 0x00DC;
373 : const sal_uInt16 BIFF_ID_DCONBINAME = 0x01B5;
374 : const sal_uInt16 BIFF_ID_DCONNAME = 0x0052;
375 : const sal_uInt16 BIFF_ID_DCONREF = 0x0051;
376 : const sal_uInt16 BIFF_ID_DEFCOLWIDTH = 0x0055;
377 : const sal_uInt16 BIFF2_ID_DEFINEDNAME = 0x0018;
378 : const sal_uInt16 BIFF3_ID_DEFINEDNAME = 0x0218;
379 : const sal_uInt16 BIFF5_ID_DEFINEDNAME = 0x0018;
380 : const sal_uInt16 BIFF2_ID_DEFROWHEIGHT = 0x0025;
381 : const sal_uInt16 BIFF3_ID_DEFROWHEIGHT = 0x0225;
382 : const sal_uInt16 BIFF_ID_DELTA = 0x0010;
383 : const sal_uInt16 BIFF2_ID_DIMENSION = 0x0000;
384 : const sal_uInt16 BIFF3_ID_DIMENSION = 0x0200;
385 : const sal_uInt16 BIFF_ID_DXF = 0x088D;
386 : const sal_uInt16 BIFF_ID_EOF = 0x000A;
387 : const sal_uInt16 BIFF_ID_EXTERNALBOOK = 0x01AE;
388 : const sal_uInt16 BIFF2_ID_EXTERNALNAME = 0x0023;
389 : const sal_uInt16 BIFF3_ID_EXTERNALNAME = 0x0223;
390 : const sal_uInt16 BIFF5_ID_EXTERNALNAME = 0x0023;
391 : const sal_uInt16 BIFF_ID_EXTERNSHEET = 0x0017;
392 : const sal_uInt16 BIFF_ID_EXTSST = 0x00FF;
393 : const sal_uInt16 BIFF_ID_FILEPASS = 0x002F;
394 : const sal_uInt16 BIFF_ID_FILESHARING = 0x005B;
395 : const sal_uInt16 BIFF_ID_FILTERCOLUMN = 0x009E;
396 : const sal_uInt16 BIFF_ID_FILTERMODE = 0x009B;
397 : const sal_uInt16 BIFF2_ID_FONT = 0x0031;
398 : const sal_uInt16 BIFF3_ID_FONT = 0x0231;
399 : const sal_uInt16 BIFF5_ID_FONT = 0x0031;
400 : const sal_uInt16 BIFF_ID_FONTCOLOR = 0x0045;
401 : const sal_uInt16 BIFF_ID_FOOTER = 0x0015;
402 : const sal_uInt16 BIFF_ID_FORCEFULLCALC = 0x08A3;
403 : const sal_uInt16 BIFF2_ID_FORMAT = 0x001E;
404 : const sal_uInt16 BIFF4_ID_FORMAT = 0x041E;
405 : const sal_uInt16 BIFF2_ID_FORMULA = 0x0006;
406 : const sal_uInt16 BIFF3_ID_FORMULA = 0x0206;
407 : const sal_uInt16 BIFF4_ID_FORMULA = 0x0406;
408 : const sal_uInt16 BIFF5_ID_FORMULA = 0x0006;
409 : const sal_uInt16 BIFF_ID_GUTS = 0x0080;
410 : const sal_uInt16 BIFF_ID_HCENTER = 0x0083;
411 : const sal_uInt16 BIFF_ID_HEADER = 0x0014;
412 : const sal_uInt16 BIFF_ID_HEADERFOOTER = 0x089C;
413 : const sal_uInt16 BIFF_ID_HIDEOBJ = 0x008D;
414 : const sal_uInt16 BIFF_ID_HORPAGEBREAKS = 0x001B;
415 : const sal_uInt16 BIFF_ID_HYPERLINK = 0x01B8;
416 : const sal_uInt16 BIFF3_ID_IMGDATA = 0x007F;
417 : const sal_uInt16 BIFF8_ID_IMGDATA = 0x00E9;
418 : const sal_uInt16 BIFF2_ID_INDEX = 0x000B;
419 : const sal_uInt16 BIFF3_ID_INDEX = 0x020B;
420 : const sal_uInt16 BIFF2_ID_INTEGER = 0x0002;
421 : const sal_uInt16 BIFF_ID_INTERFACEHDR = 0x00E1;
422 : const sal_uInt16 BIFF_ID_ITERATION = 0x0011;
423 : const sal_uInt16 BIFF_ID_IXFE = 0x0044;
424 : const sal_uInt16 BIFF2_ID_LABEL = 0x0004;
425 : const sal_uInt16 BIFF3_ID_LABEL = 0x0204;
426 : const sal_uInt16 BIFF_ID_LABELRANGES = 0x015F;
427 : const sal_uInt16 BIFF_ID_LABELSST = 0x00FD;
428 : const sal_uInt16 BIFF_ID_LEFTMARGIN = 0x0026;
429 : const sal_uInt16 BIFF_ID_MERGEDCELLS = 0x00E5;
430 : const sal_uInt16 BIFF_ID_MSODRAWING = 0x00EC;
431 : const sal_uInt16 BIFF_ID_MSODRAWINGGROUP = 0x00EB;
432 : const sal_uInt16 BIFF_ID_MSODRAWINGSEL = 0x00ED;
433 : const sal_uInt16 BIFF_ID_MTHREADSETTINGS = 0x089A;
434 : const sal_uInt16 BIFF_ID_MULTBLANK = 0x00BE;
435 : const sal_uInt16 BIFF_ID_MULTRK = 0x00BD;
436 : const sal_uInt16 BIFF_ID_NOTE = 0x001C;
437 : const sal_uInt16 BIFF_ID_NOTESOUND = 0x0096;
438 : const sal_uInt16 BIFF2_ID_NUMBER = 0x0003;
439 : const sal_uInt16 BIFF3_ID_NUMBER = 0x0203;
440 : const sal_uInt16 BIFF_ID_OBJ = 0x005D;
441 : const sal_uInt16 BIFF_ID_OBJECTPROTECT = 0x0063;
442 : const sal_uInt16 BIFF_ID_OLESIZE = 0x00DE;
443 : const sal_uInt16 BIFF_ID_PAGELAYOUTVIEW = 0x088B;
444 : const sal_uInt16 BIFF_ID_PAGESETUP = 0x00A1;
445 : const sal_uInt16 BIFF_ID_PALETTE = 0x0092;
446 : const sal_uInt16 BIFF_ID_PANE = 0x0041;
447 : const sal_uInt16 BIFF_ID_PARAMQUERY = 0x00DC;
448 : const sal_uInt16 BIFF_ID_PASSWORD = 0x0013;
449 : const sal_uInt16 BIFF_ID_PCDEFINITION = 0x00C6;
450 : const sal_uInt16 BIFF_ID_PCDEFINITION2 = 0x0122;
451 : const sal_uInt16 BIFF_ID_PCDFDISCRETEPR = 0x00D9;
452 : const sal_uInt16 BIFF_ID_PCDFIELD = 0x00C7;
453 : const sal_uInt16 BIFF_ID_PCDFIELDINDEX = 0x0103;
454 : const sal_uInt16 BIFF_ID_PCDFORMULAFIELD = 0x00F9;
455 : const sal_uInt16 BIFF_ID_PCDFRANGEPR = 0x00D8;
456 : const sal_uInt16 BIFF_ID_PCDFSQLTYPE = 0x01BB;
457 : const sal_uInt16 BIFF_ID_PCDSOURCE = 0x00E3;
458 : const sal_uInt16 BIFF_ID_PCITEM_BOOL = 0x00CA;
459 : const sal_uInt16 BIFF_ID_PCITEM_DATE = 0x00CE;
460 : const sal_uInt16 BIFF_ID_PCITEM_DOUBLE = 0x00C9;
461 : const sal_uInt16 BIFF_ID_PCITEM_ERROR = 0x00CB;
462 : const sal_uInt16 BIFF_ID_PCITEM_INDEXLIST = 0x00C8;
463 : const sal_uInt16 BIFF_ID_PCITEM_INTEGER = 0x00CC;
464 : const sal_uInt16 BIFF_ID_PCITEM_MISSING = 0x00CF;
465 : const sal_uInt16 BIFF_ID_PCITEM_STRING = 0x00CD;
466 : const sal_uInt16 BIFF_ID_PHONETICPR = 0x00EF;
467 : const sal_uInt16 BIFF_ID_PICTURE = 0x00E9;
468 : const sal_uInt16 BIFF_ID_PIVOTCACHE = 0x00D5;
469 : const sal_uInt16 BIFF_ID_PRECISION = 0x000E;
470 : const sal_uInt16 BIFF_ID_PRINTGRIDLINES = 0x002B;
471 : const sal_uInt16 BIFF_ID_PRINTHEADERS = 0x002A;
472 : const sal_uInt16 BIFF_ID_PROJEXTSHEET = 0x00A3;
473 : const sal_uInt16 BIFF_ID_PROTECT = 0x0012;
474 : const sal_uInt16 BIFF_ID_PTDATAFIELD = 0x00C5;
475 : const sal_uInt16 BIFF_ID_PTDEFINITION = 0x00B0;
476 : const sal_uInt16 BIFF_ID_PTDEFINITION2 = 0x00F1;
477 : const sal_uInt16 BIFF_ID_PTFIELD = 0x00B1;
478 : const sal_uInt16 BIFF_ID_PTFIELD2 = 0x0100;
479 : const sal_uInt16 BIFF_ID_PTFITEM = 0x00B2;
480 : const sal_uInt16 BIFF_ID_PTPAGEFIELDS = 0x00B6;
481 : const sal_uInt16 BIFF_ID_PTROWCOLFIELDS = 0x00B4;
482 : const sal_uInt16 BIFF_ID_PTROWCOLITEMS = 0x00B5;
483 : const sal_uInt16 BIFF_ID_QUERYTABLE = 0x01AD;
484 : const sal_uInt16 BIFF_ID_QUERYTABLEREFRESH = 0x0802;
485 : const sal_uInt16 BIFF_ID_QUERYTABLESETTINGS = 0x0803;
486 : const sal_uInt16 BIFF_ID_QUERYTABLESTRING = 0x0804;
487 : const sal_uInt16 BIFF_ID_RECALCID = 0x01C1;
488 : const sal_uInt16 BIFF_ID_REFMODE = 0x000F;
489 : const sal_uInt16 BIFF_ID_RIGHTMARGIN = 0x0027;
490 : const sal_uInt16 BIFF_ID_RK = 0x027E;
491 : const sal_uInt16 BIFF2_ID_ROW = 0x0008;
492 : const sal_uInt16 BIFF3_ID_ROW = 0x0208;
493 : const sal_uInt16 BIFF_ID_RSTRING = 0x00D6;
494 : const sal_uInt16 BIFF_ID_SAVERECALC = 0x005F;
495 : const sal_uInt16 BIFF_ID_SCENARIO = 0x00AF;
496 : const sal_uInt16 BIFF_ID_SCENARIOS = 0x00AE;
497 : const sal_uInt16 BIFF_ID_SCL = 0x00A0;
498 : const sal_uInt16 BIFF_ID_SCENPROTECT = 0x00DD;
499 : const sal_uInt16 BIFF_ID_SCREENTIP = 0x0800;
500 : const sal_uInt16 BIFF_ID_SELECTION = 0x001D;
501 : const sal_uInt16 BIFF_ID_SHAREDFEATHEAD = 0x0867;
502 : const sal_uInt16 BIFF_ID_SHAREDFMLA = 0x04BC;
503 : const sal_uInt16 BIFF_ID_SHEET = 0x0085;
504 : const sal_uInt16 BIFF_ID_SHEETEXT = 0x0862;
505 : const sal_uInt16 BIFF_ID_SHEETHEADER = 0x008F;
506 : const sal_uInt16 BIFF_ID_SHEETPR = 0x0081;
507 : const sal_uInt16 BIFF_ID_SST = 0x00FC;
508 : const sal_uInt16 BIFF_ID_STANDARDWIDTH = 0x0099;
509 : const sal_uInt16 BIFF2_ID_STRING = 0x0007;
510 : const sal_uInt16 BIFF3_ID_STRING = 0x0207;
511 : const sal_uInt16 BIFF_ID_STYLE = 0x0293;
512 : const sal_uInt16 BIFF_ID_STYLEEXT = 0x0892;
513 : const sal_uInt16 BIFF_ID_TABLESTYLES = 0x088E;
514 : const sal_uInt16 BIFF_ID_THEME = 0x0896;
515 : const sal_uInt16 BIFF_ID_TOPMARGIN = 0x0028;
516 : const sal_uInt16 BIFF_ID_TXO = 0x01B6;
517 : const sal_uInt16 BIFF_ID_UNCALCED = 0x005E;
518 : const sal_uInt16 BIFF_ID_USESELFS = 0x0160;
519 : const sal_uInt16 BIFF_ID_VBAPROJECT = 0x00D3;
520 : const sal_uInt16 BIFF_ID_VBAPROJECTEMPTY = 0x01BD;
521 : const sal_uInt16 BIFF_ID_VCENTER = 0x0084;
522 : const sal_uInt16 BIFF_ID_VERPAGEBREAKS = 0x001A;
523 : const sal_uInt16 BIFF_ID_WINDOW1 = 0x003D;
524 : const sal_uInt16 BIFF2_ID_WINDOW2 = 0x003E;
525 : const sal_uInt16 BIFF3_ID_WINDOW2 = 0x023E;
526 : const sal_uInt16 BIFF_ID_WRITEACCESS = 0x005C;
527 : const sal_uInt16 BIFF_ID_XCT = 0x0059;
528 : const sal_uInt16 BIFF2_ID_XF = 0x0043;
529 : const sal_uInt16 BIFF3_ID_XF = 0x0243;
530 : const sal_uInt16 BIFF4_ID_XF = 0x0443;
531 : const sal_uInt16 BIFF5_ID_XF = 0x00E0;
532 : const sal_uInt16 BIFF_ID_XFCRC = 0x087C;
533 : const sal_uInt16 BIFF_ID_XFEXT = 0x087D;
534 :
535 : const sal_uInt16 BIFF_ID_UNKNOWN = SAL_MAX_UINT16;
536 :
537 : // OBJ subrecord identifiers --------------------------------------------------
538 :
539 : const sal_uInt16 BIFF_ID_OBJEND = 0x0000; /// End of OBJ.
540 : const sal_uInt16 BIFF_ID_OBJMACRO = 0x0004; /// Macro link.
541 : const sal_uInt16 BIFF_ID_OBJBUTTON = 0x0005; /// Button data.
542 : const sal_uInt16 BIFF_ID_OBJGMO = 0x0006; /// Group marker.
543 : const sal_uInt16 BIFF_ID_OBJCF = 0x0007; /// Clipboard format.
544 : const sal_uInt16 BIFF_ID_OBJFLAGS = 0x0008; /// Option flags.
545 : const sal_uInt16 BIFF_ID_OBJPICTFMLA = 0x0009; /// OLE link formula.
546 : const sal_uInt16 BIFF_ID_OBJCBLS = 0x000A; /// Check box/radio button data.
547 : const sal_uInt16 BIFF_ID_OBJRBO = 0x000B; /// Radio button group data.
548 : const sal_uInt16 BIFF_ID_OBJSBS = 0x000C; /// Scroll bar data.
549 : const sal_uInt16 BIFF_ID_OBJNTS = 0x000C; /// Note data.
550 : const sal_uInt16 BIFF_ID_OBJSBSFMLA = 0x000E; /// Scroll bar/list box/combo box cell link.
551 : const sal_uInt16 BIFF_ID_OBJGBODATA = 0x000F; /// Group box data.
552 : const sal_uInt16 BIFF_ID_OBJEDODATA = 0x0010; /// Edit box data.
553 : const sal_uInt16 BIFF_ID_OBJRBODATA = 0x0011; /// Radio button group data.
554 : const sal_uInt16 BIFF_ID_OBJCBLSDATA = 0x0012; /// Check box/radio button data.
555 : const sal_uInt16 BIFF_ID_OBJLBSDATA = 0x0013; /// List box/combo box data.
556 : const sal_uInt16 BIFF_ID_OBJCBLSFMLA = 0x0014; /// Check box/radio button cell link.
557 : const sal_uInt16 BIFF_ID_OBJCMO = 0x0015; /// Common object settings.
558 :
559 : // record constants -----------------------------------------------------------
560 :
561 : const sal_uInt16 BIFF_BOF_BIFF2 = 0x0200;
562 : const sal_uInt16 BIFF_BOF_BIFF3 = 0x0300;
563 : const sal_uInt16 BIFF_BOF_BIFF4 = 0x0400;
564 : const sal_uInt16 BIFF_BOF_BIFF5 = 0x0500;
565 : const sal_uInt16 BIFF_BOF_BIFF8 = 0x0600;
566 :
567 : const sal_uInt8 BIFF_ERR_NULL = 0x00;
568 : const sal_uInt8 BIFF_ERR_DIV0 = 0x07;
569 : const sal_uInt8 BIFF_ERR_VALUE = 0x0F;
570 : const sal_uInt8 BIFF_ERR_REF = 0x17;
571 : const sal_uInt8 BIFF_ERR_NAME = 0x1D;
572 : const sal_uInt8 BIFF_ERR_NUM = 0x24;
573 : const sal_uInt8 BIFF_ERR_NA = 0x2A;
574 :
575 : const sal_uInt8 BIFF_DATATYPE_EMPTY = 0;
576 : const sal_uInt8 BIFF_DATATYPE_DOUBLE = 1;
577 : const sal_uInt8 BIFF_DATATYPE_STRING = 2;
578 : const sal_uInt8 BIFF_DATATYPE_BOOL = 4;
579 : const sal_uInt8 BIFF_DATATYPE_ERROR = 16;
580 :
581 : const sal_uInt8 BIFF_BOOLERR_BOOL = 0;
582 : const sal_uInt8 BIFF_BOOLERR_ERROR = 1;
583 :
584 : // BIFF8 unicode strings ------------------------------------------------------
585 :
586 : const sal_uInt8 BIFF_STRF_16BIT = 0x01;
587 : const sal_uInt8 BIFF_STRF_PHONETIC = 0x04;
588 : const sal_uInt8 BIFF_STRF_RICH = 0x08;
589 : const sal_uInt8 BIFF_STRF_UNKNOWN = 0xF2;
590 :
591 : // ============================================================================
592 :
593 : /** Static helper functions for BIFF filters. */
594 : class BiffHelper
595 : {
596 : public:
597 : // conversion -------------------------------------------------------------
598 :
599 : /** Converts the passed packed number to a double. */
600 : static double calcDoubleFromRk( sal_Int32 nRkValue );
601 :
602 : /** Converts the passed BIFF error to a double containing the respective Calc error code. */
603 : static double calcDoubleFromError( sal_uInt8 nErrorCode );
604 :
605 : // BIFF12 import ----------------------------------------------------------
606 :
607 : /** Reads a BIFF12 string with leading 16-bit or 32-bit length field. */
608 : static ::rtl::OUString readString( SequenceInputStream& rStrm, bool b32BitLen = true, bool bAllowNulChars = false );
609 :
610 : // BIFF2-BIFF8 import -----------------------------------------------------
611 :
612 : /** Returns true, if the current record of the stream is a BOF record. */
613 : static bool isBofRecord( BiffInputStream& rStrm );
614 :
615 : /** Skips a block of records up to the specified end record.
616 :
617 : Skips all records until next end record. When this function returns,
618 : the stream points to the end record, and the next call of the function
619 : startNextRecord() at the stream will start the record following the end
620 : record.
621 :
622 : The identifier of the record that is active while this function is
623 : called is used as start record identifier. This identifier is used to
624 : correctly skip embedded record blocks with the same start and end
625 : record identifier.
626 :
627 : @return True = stream points to the end record.
628 : */
629 : static bool skipRecordBlock( BiffInputStream& rStrm, sal_uInt16 nEndRecId );
630 :
631 : private:
632 : BiffHelper(); // not implemented
633 : ~BiffHelper(); // not implemented
634 : };
635 :
636 : // ----------------------------------------------------------------------------
637 :
638 : /** BIFF12 stream operator for an ::rtl::OUString, reads 32-bit string length and Unicode array. */
639 0 : inline SequenceInputStream& operator>>( SequenceInputStream& rStrm, ::rtl::OUString& orString )
640 : {
641 0 : orString = BiffHelper::readString( rStrm );
642 0 : return rStrm;
643 : }
644 :
645 : // ============================================================================
646 :
647 : } // namespace xls
648 : } // namespace oox
649 :
650 : #endif
651 :
652 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|