📄 biffrecsii2.pas
字号:
unit BIFFRecsII2;
{
********************************************************************************
******* XLSReadWriteII V2.00 *******
******* *******
******* Copyright(C) 1999,2004 Lars Arvidsson, Axolot Data *******
******* *******
******* email: components@axolot.com *******
******* URL: http://www.axolot.com *******
********************************************************************************
** Users of the XLSReadWriteII component must accept the following **
** disclaimer of warranty: **
** **
** XLSReadWriteII is supplied as is. The author disclaims all warranties, **
** expressedor implied, including, without limitation, the warranties of **
** merchantability and of fitness for any purpose. The author assumes no **
** liability for damages, direct or consequential, which may result from the **
** use of XLSReadWriteII. **
********************************************************************************
}
{$B-}
interface
const MAXCOL = 255;
const MAXROW = 65535;
const MAXRECSZ_40 = 2080;
const MAXRECSZ_97 = 8224;
const MAX_EXCEL_STRSZ = 32767;
const DEFAULT_FORMAT = 15;
const DEFAULT_FORMATS_COUNT_50 = 16;
const DEFAULT_FORMATS_COUNT_97 = 21;
const DEFAULT_FORMAT40 = 20;
const DEFAULT_FONT = 0;
const DEFAULT_FONTS_COUNT = 5;
const BIFFRECID_INTEGER_20 = $0002;
const BIFFRECID_NUMBER_20 = $0003;
const BIFFRECID_LABEL_20 = $0004;
const BIFFRECID_STRING_20 = $0007;
const BIFFRECID_00EF = $00EF;
const BIFFRECID_1904 = $0022;
const BIFFRECID_ARRAY = $0221;
const BIFFRECID_BACKUP = $0040;
const BIFFRECID_BLANK = $0201;
const BIFFRECID_BOF = $0009;
const BIFFRECID_BOF8 = $0809;
const BIFFRECID_BOOKBOOL = $00DA;
const BIFFRECID_BOOLERR = $0205;
const BIFFRECID_BOTTOMMARGIN = $0029;
const BIFFRECID_BOUNDSHEET = $0085;
const BIFFRECID_CALCMODE = $000D;
const BIFFRECID_CALCCOUNT = $000C;
//const BIFFRECID_CODENAME = $00;
const BIFFRECID_CODENAME_VBE = $0042; // Yes, they have the same id.
const BIFFRECID_CODEPAGE = $0042; //
const BIFFRECID_COLINFO = $007D;
const BIFFRECID_CONTINUE = $003C;
const BIFFRECID_CONDFMT = $01B0;
const BIFFRECID_CF = $01B1;
const BIFFRECID_COUNTRY = $008C;
const BIFFRECID_CRN = $005A;
const BIFFRECID_DBCELL = $00D7;
const BIFFRECID_DCONREF = $0051;
const BIFFRECID_DEFAULTROWHEIGHT = $0225;
const BIFFRECID_DEFCOLWIDTH = $0055;
const BIFFRECID_DELTA = $0010;
const BIFFRECID_DIMENSIONS_20 = $0000;
const BIFFRECID_DIMENSIONS = $0200;
const BIFFRECID_DSF = $0161;
const BIFFRECID_DV = $01BE;
const BIFFRECID_DVAL = $01B2;
const BIFFRECID_EOF = $000A;
const BIFFRECID_EXCEL9FILE = $01C0;
const BIFFRECID_EXTERNCOUNT = $0016;
const BIFFRECID_EXTERNNAME = $0023;
const BIFFRECID_EXTERNSHEET = $0017;
const BIFFRECID_FILEPASS = $002F;
const BIFFRECID_EXTSST = $00FF;
const BIFFRECID_FILESHARING = $005B;
const BIFFRECID_FNGROUPCOUNT = $009C;
const BIFFRECID_FONT = $0031;
const BIFFRECID_FOOTER = $0015;
const BIFFRECID_FORMAT = $041E;
const BIFFRECID_FORMULA = $0006;
const BIFFRECID_FORMULA_30 = $0206;
const BIFFRECID_FORMULA_40 = $0406;
const BIFFRECID_GRIDSET = $0082;
const BIFFRECID_GUTS = $0080;
const BIFFRECID_HCENTER = $0083;
const BIFFRECID_HEADER = $0014;
const BIFFRECID_HIDEOBJ = $008D;
const BIFFRECID_HLINK = $01B8;
const BIFFRECID_HLINKTOOLTIP = $0800;
const BIFFRECID_HORIZONTALPAGEBREAKS = $001B;
const BIFFRECID_INDEX = $020B;
const BIFFRECID_INTERFACEHDR = $00E1;
const BIFFRECID_INTERFACEEND = $00E2;
const BIFFRECID_ITERATION = $0011;
const BIFFRECID_LABEL = $0204;
const BIFFRECID_LABELSST = $00FD;
const BIFFRECID_LEFTMARGIN = $0026;
const BIFFRECID_MERGEDCELLS = $00E5;
const BIFFRECID_MSODRAWING = $00EC;
const BIFFRECID_MSODRAWINGGROUP = $00EB;
const BIFFRECID_MSODRAWINGSELECTION=$00ED;
const BIFFRECID_MULRK = $00BD;
const BIFFRECID_MULBLANK = $00BE;
const BIFFRECID_NAME = $0018;
const BIFFRECID_NOTE = $001C;
const BIFFRECID_NUMBER = $0203;
const BIFFRECID_OBJ = $005D;
const BIFFRECID_OBPROJ = $00D3;
const BIFFRECID_PALETTE = $0092;
const BIFFRECID_PANE = $0041;
const BIFFRECID_PASSWORD = $0013;
const BIFFRECID_PRECISION = $000E;
const BIFFRECID_PRINTGRIDLINES = $002B;
const BIFFRECID_PRINTHEADERS = $002A;
const BIFFRECID_PROT4REV = $01AF;
const BIFFRECID_PROT4REVPASS = $01BC;
const BIFFRECID_PROTECT = $0012;
const BIFFRECID_RECALCID = $01C1;
const BIFFRECID_REFRESHALL = $01B7;
const BIFFRECID_REFMODE = $000F;
const BIFFRECID_RIGHTMARGIN = $0027;
const BIFFRECID_RK = $007E;
const BIFFRECID_RK7 = $027E;
const BIFFRECID_PLS = $004D;
const BIFFRECID_ROW = $0208;
const BIFFRECID_RSTRING = $00D6;
const BIFFRECID_SAVERECALC = $005F;
const BIFFRECID_SCL = $00A0;
const BIFFRECID_SELECTION = $001D;
const BIFFRECID_SETUP = $00A1;
const BIFFRECID_SHRFMLA = $00BC;
const BIFFRECID_SHRFMLA_20 = $04BC;
const BIFFRECID_SST = $00FC;
const BIFFRECID_STRING = $0207;
const BIFFRECID_STYLE = $0293;
const BIFFRECID_SUPBOOK = $01AE;
const BIFFRECID_SXIDSTM = $00D5;
const BIFFRECID_SXVS = $00E3;
const BIFFRECID_TABID = $013D;
const BIFFRECID_TOPMARGIN = $0028;
const BIFFRECID_TXO = $01B6;
const BIFFRECID_UNCALCED = $005E;
const BIFFRECID_USERBVIEW = $01A9;
const BIFFRECID_USERSVIEWBEGIN = $01AA;
const BIFFRECID_USERSVIEWEND = $01AB;
const BIFFRECID_USESELFS = $0160;
const BIFFRECID_VCENTER = $0084;
const BIFFRECID_VERTICALPAGEBREAKS =$001A;
const BIFFRECID_WINDOW1 = $003D;
const BIFFRECID_WINDOW2 = $023E;
const BIFFRECID_WINDOWPROTECT = $0019;
const BIFFRECID_WRITEACCESS = $005C;
const BIFFRECID_WSBOOL = $0081;
const BIFFRECID_XCT = $0059;
const BIFFRECID_XF = $00E0;
const BIFFRECID_XF_30 = $0243;
const BIFFRECID_XF_40 = $0443;
const XBIFFRECID_CHART = $0851;
const CHARTRECID_3D = $103A;
const CHARTRECID_AI = $1051;
const CHARTRECID_ALRUNS = $1050;
const CHARTRECID_AREA = $101A;
const CHARTRECID_AREAFORMAT = $100A;
const CHARTRECID_ATTACHEDLABEL = $100C;
const CHARTRECID_AXCEXT = $1062;
const CHARTRECID_AXESUSED = $1046;
const CHARTRECID_AXIS = $101D;
const CHARTRECID_AXISLINEFORMAT = $1021;
const CHARTRECID_AXISPARENT = $1041;
const CHARTRECID_BAR = $1017;
const CHARTRECID_BEGIN = $1033;
const CHARTRECID_BOPPOP = $1061;
const CHARTRECID_BOPPOPCUSTOM = $1067;
const CHARTRECID_CATSERRANGE = $1020;
const CHARTRECID_CHART = $1002;
const CHARTRECID_CHARTFORMAT = $1014;
const CHARTRECID_CHARTFORMATLINK = $1022;
const CHARTRECID_CHARTLINE = $101C;
const CHARTRECID_DAT = $1063;
const CHARTRECID_DATAFORMAT = $1006;
const CHARTRECID_DEFAULTTEXT = $1024;
const CHARTRECID_DROPBAR = $103D;
const CHARTRECID_END = $1034;
const CHARTRECID_FBI = $1060;
const CHARTRECID_FONTX = $1026;
const CHARTRECID_FRAME = $1032;
const CHARTRECID_GELFRAME = $1066;
const CHARTRECID_GEOMETRY = $105F;
const CHARTRECID_IFMT = $104E;
const CHARTRECID_LEGEND = $1015;
const CHARTRECID_LEGENDXN = $1043;
const CHARTRECID_LINE = $1018;
const CHARTRECID_LINEFORMAT = $1007;
const CHARTRECID_MARKERFORMAT = $1009;
const CHARTRECID_OBJECTLINK = $1027;
const CHARTRECID_PICF = $103C;
const CHARTRECID_PIE = $1019;
const CHARTRECID_PIEFORMAT = $100B;
const CHARTRECID_PLOTAREA = $1035;
const CHARTRECID_PLOTGROWTH = $1064;
const CHARTRECID_POS = $104F;
const CHARTRECID_RADAR = $103E;
const CHARTRECID_RADARAREA = $1040;
const CHARTRECID_SBASEREF = $1048;
const CHARTRECID_SCATTER = $101B;
const CHARTRECID_SERAUXERRBAR = $105B;
const CHARTRECID_SERAUXTREND = $104B;
const CHARTRECID_SERFMT = $105D;
const CHARTRECID_SERIES = $1003;
const CHARTRECID_SERIESLIST = $1016;
const CHARTRECID_SERIESTEXT = $100D;
const CHARTRECID_SERPARENT = $104A;
const CHARTRECID_SERTOCRT = $1045;
const CHARTRECID_SHTPROPS = $1044;
const CHARTRECID_SIINDEX = $1065;
const CHARTRECID_SURFACE = $103F;
const CHARTRECID_TEXT = $1025;
const CHARTRECID_TICK = $101E;
const CHARTRECID_UNITS = $1001;
const CHARTRECID_VALUERANGE = $101F;
const OBJREC_END = $00;
const OBJREC_MACRO = $04;
const OBJREC_BUTTON = $05;
const OBJREC_GMO = $06;
const OBJREC_CF = $07;
const OBJREC_PIOGRBIT = $08;
const OBJREC_PICTFMLA = $09;
const OBJREC_CBLS = $0A;
const OBJREC_RBO = $0B;
const OBJREC_SBS = $0C;
const OBJREC_NTS = $0D;
const OBJREC_SBSFMLA = $0E;
const OBJREC_GBODATA = $0F;
const OBJREC_EDODATA = $10;
const OBJREC_RBODATA = $11;
const OBJREC_CBLSDATA = $12;
const OBJREC_LBSDATA = $13;
const OBJREC_CBLSFMLA = $14;
const OBJREC_CMO = $15;
const OBJTYPE_GROUP = $0000;
const OBJTYPE_LINE = $0001;
const OBJTYPE_RECTANGLE = $0002;
const OBJTYPE_OVAL = $0003;
const OBJTYPE_ARC = $0004;
const OBJTYPE_CHART = $0005;
const OBJTYPE_TEXT = $0006;
const OBJTYPE_BUTTON = $0007;
const OBJTYPE_PICTURE = $0008;
const OBJTYPE_POLYGON = $0009;
const OBJTYPE_RESERVED1 = $000A;
const OBJTYPE_CHECK_BOX = $000B;
const OBJTYPE_OPTION_BUTTON = $000C;
const OBJTYPE_EDIT_BOX = $000D;
const OBJTYPE_LABEL = $000E;
const OBJTYPE_DIALOG_BOX = $000F;
const OBJTYPE_SPINNER = $0010;
const OBJTYPE_SCROLL_BAR = $0011;
const OBJTYPE_LIST_BOX = $0012;
const OBJTYPE_GROUP_BOX = $0013;
const OBJTYPE_COMBO_BOX = $0014;
const OBJTYPE_RESERVED2 = $0015;
const OBJTYPE_RESERVED3 = $0016;
const OBJTYPE_RESERVED4 = $0017;
const OBJTYPE_RESERVED5 = $0018;
const OBJTYPE_COMMENT = $0019;
const OBJTYPE_RESERVED6 = $001A;
const OBJTYPE_RESERVED7 = $001B;
const OBJTYPE_RESERVED8 = $001C;
const OBJTYPE_RESERVED9 = $001D;
const OBJTYPE_MICROSOFT_OFFICE_DRAWING = $001E;
const
ptgExp = $01;
ptgTbl = $02;
ptgAdd = $03;
ptgSub = $04;
ptgMul = $05;
ptgDiv = $06;
ptgPower = $07;
ptgConcat = $08;
ptgLT = $09;
ptgLE = $0A;
ptgEQ = $0B;
ptgGE = $0C;
ptgGT = $0D;
ptgNE = $0E;
ptgIsect = $0F;
ptgUnion = $10;
ptgRange = $11;
ptgUplus = $12;
ptgUminus = $13;
ptgPercent = $14;
ptgParen = $15;
ptgMissArg = $16;
ptgStr = $17;
ptgExtend = $18;
ptgAttr = $19;
ptgSheet = $1A;
ptgEndSheet = $1B;
ptgErr = $1C;
ptgBool = $1D;
ptgInt = $1E;
ptgNum = $1F;
ptgArray = $20;
ptgFunc = $21;
ptgFuncVar = $22;
ptgName = $23;
ptgRef = $24;
ptgArea = $25;
ptgMemArea = $26;
ptgMemErr = $27;
ptgMemNoMem = $28;
ptgMemFunc = $29;
ptgRefErr = $2A;
ptgAreaErr = $2B;
ptgRefN = $2C;
ptgAreaN = $2D;
ptgMemAreaN = $2E;
ptgMemNoMemN = $2F;
ptgNameX = $39;
ptgRef3d = $3A;
ptgArea3d = $3B;
ptgRefErr3d = $3C;
ptgAreaErr3d = $3D;
ptgArrayV = $40;
ptgFuncV = $41;
ptgFuncVarV = $42;
ptgNameV = $43;
ptgRefV = $44;
ptgAreaV = $45;
ptgMemAreaV = $46;
ptgMemErrV = $47;
ptgMemNoMemV = $48;
ptgMemFuncV = $49;
ptgRefErrV = $4A;
ptgAreaErrV = $4B;
ptgRefNV = $4C;
ptgAreaNV = $4D;
ptgMemAreaNV = $4E;
ptgMemNoMemNV = $4F;
ptgFuncCEV = $58;
ptgNameXV = $59;
ptgRef3dV = $5A;
ptgArea3dV = $5B;
ptgRefErr3dV = $5C;
ptgAreaErr3dV = $5D;
ptgArrayA = $60;
ptgFuncA = $61;
ptgFuncVarA = $62;
ptgNameA = $63;
ptgRefA = $64;
ptgAreaA = $65;
ptgMemAreaA = $66;
ptgMemErrA = $67;
ptgMemNoMemA = $68;
ptgMemFuncA = $69;
ptgRefErrA = $6A;
ptgAreaErrA = $6B;
ptgRefNA = $6C;
ptgAreaNA = $6D;
ptgMemAreaNA = $6E;
ptgMemNoMemNA = $6F;
ptgFuncCEA = $78;
ptgNameXA = $79;
ptgRef3dA = $7A;
ptgArea3dA = $7B;
ptgRefErr3dA = $7C;
ptgAreaErr3dA = $7D;
// Size
eptgElfLel = $01; // 4
eptgElfRw = $02; // 4
eptgElfCol = $03; // 4
eptgElfRwV = $06; // 4
eptgElfColV = $07; // 4
eptgElfRadical = $0A; // 13
eptgElfRadicalS = $0B; // 13
eptgElfRwS = $0C; // 4
eptgElfColS = $0D; // 4
eptgElfRwSV = $0E; // 4
eptgElfColSV = $0F; // 4
eptgElfRadicalLel = $10; // 4
eptgSxName = $1D; // 4
type TSheetOption = (soGridlines,soRowColHeadings,soProtected);
type TSheetOptions = set of TSheetOption;
type TCalculateOption = (coNotCalcDependent,coExternalSeek);
TCalculateOptions = set of TCalculateOption;
const CellErrorNames: array[0..7] of string =
('[int] No error value','#NULL!','#DIV/0!','#VALUE!','#REF!','#NAME?','#NUM!','N/A');
const ERR_NULL = 1;
const ERR_DIV = 2;
const ERR_VALUE = 3;
const ERR_REF = 4;
const ERR_NAME = 5;
const ERR_NUM = 6;
const ERR_NA = 7;
// errError = internal, there is no defined error value.
type TCellError = (errError,errNull,errDiv0,errValue,errRef,errName,errNum,errNA);
type TExcelColor = (xc0,xc1,xc2,xc3,xc4,xc5,xc6,xc7,
xcBlack,xcWhite,xcRed,xcBrightGreen,xcBlue,xcYellow,xcPink,xcTurquoise,
xcDarkRed,xcGreen,xcDarkBlue,xcBrownGreen,xcViolet,xcBlueGreen,xcGray25,xcGray50,
xc24,xc25,xc26,xc27,xc28,xc29,xc30,xc31,
xc32,xc33,xc34,xc35,xc36,xc37,xc38,xc39,
xcSky,xcPaleTurquois,xcPaleGreen,xcLightYellow,xcPaleSky,xcRose,xcLilac,xcLightBrown,
xcDarkSky,xcDarkTurquois,xcGrass,xcGold,xcLightOrange,xcOrange,xcDarkBlueGray,xcGray40,
xcDarkGreenGray,xcEmerald,xcDarkGreen,xcOlive,xcBrown,xcCherry,xcIndigo,xcGray80,
xcAutomatic);
// New
const TDefaultExcelColorPalette: array[0..64] of integer = (
$000000, $000000, $000000, $000000, $000000, $000000, $000000, $000000,
$000000, $FFFFFF, $0000FF, $00FF00, $FF0000, $00FFFF, $FF00FF, $FFFF00,
$000080, $008000, $800000, $008080, $800080, $808000, $C0C0C0, $808080,
$FF9999, $663399, $CCFFFF, $FFFFCC, $660066, $8080FF, $CC6600, $FFCCCC,
$800000, $FF00FF, $00FFFF, $FFFF00, $800080, $000080, $808000, $FF0000,
$FFCC00, $FFFFCC, $CCFFCC, $99FFFF, $FFCC99, $CC99FF, $FF99CC, $99CCFF,
$FF6633, $CCCC33, $00CC99, $00CCFF, $0099FF, $0066FF, $996666, $969696,
$663300, $669933, $003300, $003333, $003399, $663399, $993333, $333333,
$FFFFFF);
var ExcelColorPalette: array[0..High(TDefaultExcelColorPalette)] of integer;
type TExcelFillPattern = (fpNone,fpPattern1,fpPattern2,fpPattern3,fpPattern4,
fpPattern5,fpPattern6,fpPattern7,fpPattern8,fpPattern9,fpPattern10,fpPattern11,
fpPattern12,fpPattern13,fpPattern14,fpPattern15,fpPattern16,fpPattern17,
fpPattern18);
type TSubStreamType = (stGlobals,stVBModule,stWorksheet,stChart,stExcel4Macro,stWorkspace);
type TWordBit = (b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15);
type TWordBits = set of TWordBit;
type TExcelVersion = (xvNone,xvExcelUnknown,xvExcel21,xvExcel30,xvExcel40,xvExcel50,xvExcel97);
type T2ByteWord = packed record
case word of
0: (W: word);
1: (B: array[0..1] of byte);
end;
type PRecCellArea = ^TRecCellArea;
TRecCellArea = packed record
Row1,Row2: word;
Col1,Col2: word;
end;
type TPageBreak = packed record
Val1: word;
Val2: word;
Val3: word;
end;
type PRecTXORUN = ^TRecTXORUN;
TRecTXORUN = packed record
CharIndex: word;
FontIndex: word;
Reserved: longword;
end;
type TDynTXORUNArray = array of TRecTXORUN;
type PObjCMO = ^TObjCMO;
TObjCMO = packed record
ObjType: word;
ObjId: word;
Options: word;
Reserved: array[0..11] of byte;
end;
type PObjSBS = ^TObjSBS;
TObjSBS = packed record
Reserved: array[0..3] of byte;
ScrollPos: word;
MinimumValue: word;
MaximumValue: word;
ScrollWhenArrowClicked: word;
ScrollWhenBarClicked: word;
Horizontal: word;
Width: word;
Options: word;
end;
// This is the part AFTER the formula
type PObjLBS = ^TObjLBS;
TObjLBS = packed record
// Reserved1: word;
// FmlaLen: word;
// Reserved2: longword;
// Fmla: array of byte;
Reserved3: byte;
Elements: word;
Selected: word;
Options: word;
end;
// ********** BIFF Records *******
type PFormatRun = ^TFormatRun;
TFormatRun = packed record
Index: word;
FontIndex: word;
end;
type PBIFFHeader = ^TBIFFHeader;
TBIFFHeader = packed record
RecID: word;
Length: word;
end;
type PRec2INTEGER = ^TRec2INTEGER;
TRec2INTEGER = packed record
Row: word;
Col: byte;
Res: byte;
Attribute: array[0..2] of byte;
Value: word;
end;
type PRec2NUMBER = ^TRec2NUMBER;
TRec2NUMBER = packed record
Row: word;
Col: byte;
Res: byte;
Attribute: array[0..2] of byte;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -