1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
|
/**
* ms-biff.h: MS Excel BIFF support for Gnumeric
*
* Author:
* Michael Meeks (michael@ximian.com)
*
* (C) 1998, 1999, 2000 Michael Meeks
**/
#ifndef GNUMERIC_BIFF_H
#define GNUMERIC_BIFF_H
#include <libole2/ms-ole.h>
#undef EDEBUG
typedef struct _BiffQuery BiffQuery;
struct _BiffQuery {
guint8 ms_op;
guint8 ls_op;
guint16 opcode;
guint8 *data;
int data_malloced;
guint32 length;
guint32 streamPos;
MsOleStream *pos;
};
typedef enum {
MS_BIFF_V2 = 2,
MS_BIFF_V3 = 3,
MS_BIFF_V4 = 4,
MS_BIFF_V5 = 5, /* Excel 5.0 */
MS_BIFF_V7 = 7, /* Excel 95 */
MS_BIFF_V8 = 8, /* Excel 97 */
MS_BIFF_V_UNKNOWN = 0
} MsBiffVersion;
/* Pass this a BiffQuery * */
#define EX_GETROW(p) (MS_OLE_GET_GUINT16(p->data + 0))
#define EX_GETCOL(p) (MS_OLE_GET_GUINT16(p->data + 2))
#define EX_GETXF(p) (MS_OLE_GET_GUINT16(p->data + 4))
#define EX_GETSTRLEN(p) (MS_OLE_GET_GUINT16(p->data + 6))
/* Version info types as found in various Biff records */
typedef enum {
MS_BIFF_TYPE_Workbook,
MS_BIFF_TYPE_VBModule,
MS_BIFF_TYPE_Worksheet,
MS_BIFF_TYPE_Chart,
MS_BIFF_TYPE_Macrosheet,
MS_BIFF_TYPE_Workspace,
MS_BIFF_TYPE_Unknown
} MsBiffFileType;
/* Cell / XF types */
typedef enum {
MS_BIFF_H_VISIBLE,
MS_BIFF_H_HIDDEN,
MS_BIFF_H_VERY_HIDDEN
} MsBiffHidden;
typedef enum {
MS_BIFF_X_STYLE,
MS_BIFF_X_CELL
} MsBiffXfType;
typedef enum {
MS_BIFF_F_MS,
MS_BIFF_F_LOTUS
} MsBiffFormat;
typedef enum {
MS_BIFF_E_CONTEXT,
MS_BIFF_E_LEFT_TO_RIGHT,
MS_BIFF_E_RIGHT_TO_LEFT
} MsBiffEastern;
typedef struct {
MsBiffVersion version;
MsBiffFileType type;
} MsBiffBofData;
typedef enum {
MsBiffMaxRowsV7 = 16384,
MsBiffMaxRowsV8 = 65536
} MsBiffMaxRows;
int excel_book_get_info (const char *fname, wbook *book);
MsBiffBofData *new_ms_biff_bof_data (BiffQuery *pos);
void free_ms_biff_bof_data (MsBiffBofData *data);
BiffQuery *ms_biff_query_new (MsOleStream *ptr);
int ms_biff_query_next (BiffQuery *bq);
void ms_biff_query_destroy (BiffQuery *bq);
/**
* biff-types.h: A long and dull list of BIFF types.
*
* Author:
* Michael Meeks (michael@ximian.com)
*
* (C) 1998-2001 Michael Meeks
**/
#define BIFF_DIMENSIONS 0x00 /* 2, NOT 1,10 */
#define BIFF_BLANK 0x01 /* 2, NOT 10 */
#define BIFF_NUMBER 0x03 /* 2, NOT 1,10 */
#define BIFF_LABEL 0x04 /* 2 */
#define BIFF_BOOLERR 0x05 /* 2, NOT 10 */
#define BIFF_FORMULA 0x06 /* 4, NOT 10 */
#define BIFF_STRING 0x07 /* 2 */
#define BIFF_ROW 0x08 /* 2 */
#define BIFF_BOF 0x09 /* 8, NOT 10 */
#define BIFF_EOF 0x0a /* 0, NOT 10 */
#define BIFF_INDEX 0x0b /* 2, NOT 10 */
#define BIFF_CALCCOUNT 0x0c /* 0, NOT 10 */
#define BIFF_CALCMODE 0x0d /* 0, NOT 10 */
#define BIFF_PRECISION 0x0e /* 0 */
#define BIFF_REFMODE 0x0f /* 0 */
#define BIFF_DELTA 0x10 /* 0 */
#define BIFF_ITERATION 0x11 /* 0 */
#define BIFF_PROTECT 0x12 /* 0 */
#define BIFF_PASSWORD 0x13 /* 0 */
#define BIFF_HEADER 0x14 /* 0, NOT 10 */
#define BIFF_FOOTER 0x15 /* 0, NOT 10 */
#define BIFF_EXTERNCOUNT 0x16 /* 0, NOT 10 */
#define BIFF_EXTERNSHEET 0x17 /* 0, NOT 10 */
#define BIFF_NAME 0x18 /* 2, NOT 10 */
#define BIFF_WINDOWPROTECT 0x19 /* 0, NOT 10 */
#define BIFF_VERTICALPAGEBREAKS 0x1a /* 0, NOT 10 */
#define BIFF_HORIZONTALPAGEBREAKS 0x1b /* 0, NOT 10 */
#define BIFF_NOTE 0x1c /* 0, NOT 10 */
#define BIFF_SELECTION 0x1d /* 0, NOT 10 */
#define BIFF_FORMAT 0x1e /* 4, NOT 10 */
#define BIFF_ARRAY 0x21 /* 2, NOT 10 */
#define BIFF_1904 0x22 /* 0, NOT 1,10 */
#define BIFF_EXTERNNAME 0x23 /* 2 */
#define BIFF_DEFAULTROWHEIGHT 0x25 /* 2, NOT 10 */
#define BIFF_LEFT_MARGIN 0x26 /* 0, NOT 10 */
#define BIFF_RIGHT_MARGIN 0x27 /* 0, NOT 10 */
#define BIFF_TOP_MARGIN 0x28 /* 0 */
#define BIFF_BOTTOM_MARGIN 0x29 /* 0 */
#define BIFF_PRINTHEADERS 0x2a /* 0 */
#define BIFF_PRINTGRIDLINES 0x2b /* 0 */
#define BIFF_FILEPASS 0x2f /* 0 */
#define BIFF_FONT 0x31 /* 2 */
#define BIFF_PRINTSIZE 0x33 /* 0, Undocumented */
#define BIFF_TABLE 0x36 /* 2 */
#define BIFF_CONTINUE 0x3c /* 0, NOT 10 */
#define BIFF_WINDOW1 0x3d /* 0, NOT 1,10 */
#define BIFF_WINDOW2 0x3e /* 2, NOT 10 */
#define BIFF_BACKUP 0x40 /* 0, NOT 10 */
#define BIFF_PANE 0x41 /* 0, NOT 10 */
#define BIFF_CODEPAGE 0x42 /* DUPLICATE 42 */
#define BIFF_XF_OLD 0x43 /* What is this ?, NOT 10 */
#define BIFF_PLS 0x4d /* 0 */
#define BIFF_DCON 0x50 /* 0, NOT 10 */
#define BIFF_DCONREF 0x51 /* 0, NOT 10 */
#define BIFF_DCONNAME 0x52 /* 0 */
#define BIFF_DEFCOLWIDTH 0x55 /* 0 */
#define BIFF_XCT 0x59 /* 0 */
#define BIFF_CRN 0x5a /* 0 */
#define BIFF_FILESHARING 0x5b /* 0, NOT 10 */
#define BIFF_WRITEACCESS 0x5c /* 0 */
#define BIFF_OBJ 0x5d /* 0, NOT 10 */
#define BIFF_UNCALCED 0x5e /* 0 */
#define BIFF_SAVERECALC 0x5f /* 0 */
#define BIFF_TEMPLATE 0x60 /* 0, NOT 1,10 */
#define BIFF_TAB_COLOR 0x62 /* 8 */
#define BIFF_OBJPROTECT 0x63 /* 0, NOT 10 */
#define BIFF_COLINFO 0x7d /* 0 */
#define BIFF_RK 0x7e /* 0 */
#define BIFF_IMDATA 0x7f /* 0 */
#define BIFF_GUTS 0x80 /* 0 */
#define BIFF_WSBOOL 0x81 /* 0 */
#define BIFF_GRIDSET 0x82 /* 0 */
#define BIFF_HCENTER 0x83 /* 0 */
#define BIFF_VCENTER 0x84 /* 0 */
#define BIFF_BOUNDSHEET 0x85 /* 0 */
#define BIFF_WRITEPROT 0x86 /* 0 */
#define BIFF_ADDIN 0x87 /* 0 */
#define BIFF_EDG 0x88 /* 0 */
#define BIFF_PUB 0x89 /* 0 */
#define BIFF_COUNTRY 0x8c /* 0 */
#define BIFF_HIDEOBJ 0x8d /* 0 */
#define BIFF_SORT 0x90 /* 0 */
#define BIFF_SUB 0x91 /* 0 */
#define BIFF_PALETTE 0x92 /* 0 */
#define BIFF_STYLE 0x93 /* 2 */
#define BIFF_LHRECORD 0x94 /* 0 */
#define BIFF_LHNGRAPH 0x95 /* 0 */
#define BIFF_SOUND 0x96 /* 0 */
#define BIFF_LPR 0x98 /* 0 */
#define BIFF_STANDARDWIDTH 0x99 /* 0 */
#define BIFF_FNGROUPNAME 0x9a /* 0 */
#define BIFF_FILTERMODE 0x9b /* 0 */
#define BIFF_FNGROUPCOUNT 0x9c /* 0 */
#define BIFF_AUTOFILTERINFO 0x9d /* 0 */
#define BIFF_AUTOFILTER 0x9e /* 0 */
#define BIFF_SCL 0xa0 /* 0 */
#define BIFF_SETUP 0xa1 /* 0 */
#define BIFF_COORDLIST 0xa9 /* 0 NOT 1 */
#define BIFF_GCW 0xab /* 0 NOT 1 */
#define BIFF_SCENMAN 0xae /* 0 NOT 1 */
#define BIFF_SCENARIO 0xaf /* 0 NOT 1 */
#define BIFF_SXVIEW 0xb0 /* 0 */
#define BIFF_SXVD 0xb1 /* 0 NOT 1 */
#define BIFF_SXVI 0xb2 /* 0 NOT 1 */
#define BIFF_SXIVD 0xb4 /* 0 */
#define BIFF_SXLI 0xb5 /* 0 NOT 1 */
#define BIFF_SXPI 0xb6 /* 0 NOT 1 */
#define BIFF_DOCROUTE 0xb8 /* 0 NOT 1 */
#define BIFF_RECIPNAME 0xb9 /* 0 */
#define BIFF_SHRFMLA 0xbc /* 0 NOT 1 */
#define BIFF_MULRK 0xbd /* 0 */
#define BIFF_MULBLANK 0xbe /* 0 NOT 1 */
#define BIFF_MMS 0xc1 /* 0 */
#define BIFF_ADDMENU 0xc2 /* 0 */
#define BIFF_DELMENU 0xc3 /* 0 */
#define BIFF_SXDI 0xc5 /* 0 */
#define BIFF_SXDB 0xc6 /* 0 */
#define BIFF_SXSTRING 0xcd /* 0 */
#define BIFF_SXTBL 0xd0 /* 0 */
#define BIFF_SXTBRGIITM 0xd1 /* 0 */
#define BIFF_SXTBPG 0xd2 /* 0 */
#define BIFF_OBPROJ 0xd3 /* 0 */
#define BIFF_SXIDSTM 0xd5 /* 0 */
#define BIFF_RSTRING 0xd6 /* 0 */
#define BIFF_DBCELL 0xd7 /* 0 */
#define BIFF_BOOKBOOL 0xda /* 0 */
#define BIFF_PARAMQRY 0xdc /* DUPLICATE dc */
#define BIFF_SXEXT 0xdc /* DUPLICATE dc */
#define BIFF_SCENPROTECT 0xdd /* 0 */
#define BIFF_OLESIZE 0xde /* 0 */
#define BIFF_UDDESC 0xdf /* 0 */
#define BIFF_XF 0xe0 /* 0 */
#define BIFF_INTERFACEHDR 0xe1 /* 0 */
#define BIFF_INTERFACEEND 0xe2 /* 0 */
#define BIFF_SXVX 0xe3 /* 0 */
#define BIFF_MERGECELLS 0xe5 /* Undocumented */
#define BIFF_BG_PIC 0xe9 /* Undocumented */
#define BIFF_TABIDCONF 0xea /* 0 */
#define BIFF_MS_O_DRAWING_GROUP 0xeb /* 0 */
#define BIFF_MS_O_DRAWING 0xec /* 0 */
#define BIFF_MS_O_DRAWING_SELECTION 0xed /* 0 */
#define BIFF_PHONETIC 0xef /* semi-Undocumented */
#define BIFF_SXRULE 0xf0 /* 0 */
#define BIFF_SXEX 0xf1 /* 0 */
#define BIFF_SXFILT 0xf2 /* 0 */
#define BIFF_SXNAME 0xf6 /* 0 */
#define BIFF_SXSELECT 0xf7 /* 0 */
#define BIFF_SXPAIR 0xf8 /* 0 */
#define BIFF_SXFMLA 0xf9 /* 0 */
#define BIFF_SXFORMAT 0xfb /* 0 */
#define BIFF_SST 0xfc /* 0 */
#define BIFF_LABELSST 0xfd /* 0 */
#define BIFF_EXTSST 0xff /* 0 */
/* Odd balls */
#define BIFF_SXVDEX 0x100 /* ONLY 1 */
#define BIFF_SXFORMULA 0x103 /* ONLY 1 */
#define BIFF_SXDBEX 0x122 /* ONLY 1 */
#define BIFF_TABID 0x13d /* ONLY 1 */
#define BIFF_USESELFS 0x160 /* ONLY 1 */
#define BIFF_DSF 0x161 /* ONLY 1 */
#define BIFF_XL5MODIFY 0x162 /* ONLY 1 */
#define BIFF_FILESHARING2 0x1a5
#define BIFF_USERDBVIEW 0x1a9 /* ONLY 1 */
#define BIFF_USERSVIEWBEGIN 0x1aa
#define BIFF_USERSVIEWEND 0x1ab /* ONLY 1 */
#define BIFF_QSI 0x1ad
#define BIFF_SUPBOOK 0x1ae /* ONLY 1 */
#define BIFF_PROT4REV 0x1af /* ONLY 1 */
#define BIFF_CONDFMT 0x1b0 /* ONLY 1 */
#define BIFF_CF 0x1b1 /* ONLY 1 */
#define BIFF_DVAL 0x1b2 /* ONLY 1 */
#define BIFF_DCONBIN 0x1b5 /* ONLY 1 */
#define BIFF_TXO 0x1b6 /* ONLY 1 */
#define BIFF_REFRESHALL 0x1b7 /* ONLY 1 */
#define BIFF_HLINK 0x1b8 /* ONLY 1 */
#define BIFF_CODENAME 0x1ba /* ONLY 1, TYPO in MS Docs */
#define BIFF_SXFDBTYPE 0x1bb
#define BIFF_PROT4REVPASS 0x1bc /* ONLY 1 */
#define BIFF_DV 0x1be /* ONLY 1 */
#define BIFF_XL9FILE 0x1c0 /* ONLY 1 */
#define BIFF_RECALCID 0x1c1 /* ONLY 1 */
#define BIFF_UNKNOWN_1 0x810 /* what this is */
#endif /* GNUMERIC_BIFF_H */
|