📄 qexport4xlscommon.pas
字号:
unit QExport4XLSCommon;
interface
uses SysUtils;
type
ExlsFileError = class(Exception);
const
MAX_COL_COUNT = 255;
MAX_ROW_COUNT = 65535; {zero based}
MAX_SHEET_COUNT = 250;
//------
MAX_RECORD_DATA_SIZE = 8224;
DEF_COL_WIDTH = 8;
DEF_ROW_HEIGHT = 12.75;
DEFAULT_FORMAT = 15;
DEFAULT_TEXT_FORMAT = 'General';
//------
BIFF_BOF_VER = $0600;
//------
BIFF_BOF_GLOBALS = $0005;
BIFF_BOF_WORKSHEET = $0010;
BIFF_BOF_CHART = $0020;
//------
BIFF_FORMULA = $0006;
BIFF_EOF = $000A;
BIFF_CALCCOUNT = $000C;
BIFF_CALCMODE = $000D;
BIFF_PRECISION = $000E;
BIFF_REFMODE = $000F;
BIFF_DELTA = $0010;
BIFF_ITERATION = $0011;
BIFF_PROTECT = $0012;
BIFF_PASSWORD = $0013;
BIFF_HEADER = $0014;
BIFF_FOOTER = $0015;
BIFF_EXTERNSHEET = $0017;
BIFF_NAME = $0018;
BIFF_WINDOWPROTECT = $0019;
BIFF_NOTE = $001C;
BIFF_SELECTION = $001D;
BIFF_1904 = $0022;
BIFF_PRINTHEADERS = $002A;
BIFF_PRINTGRIDLINES = $002B;
BIFF_FONT = $0031;
BIFF_CONTINUE = $003C;
BIFF_WINDOW1 = $003D;
BIFF_BACKUP = $0040;
BIFF_CODEPAGE = $0042;
BIFF_DEFCOLWIDTH = $0055;
BIFF_WRITEACCESS = $005C;
BIFF_OBJ = $005D;
BIFF_SAVERECALC = $005F;
BIFF_COLINFO = $007D;
BIFF_GUTS = $0080;
BIFF_WSBOOL = $0081;
BIFF_GRIDSET = $0082;
BIFF_HCENTER = $0083;
BIFF_VCENTER = $0084;
BIFF_BOUNDSHEET = $0085;
BIFF_COUNTRY = $008C;
BIFF_HIDEOBJ = $008D;
BIFF_PALETTE = $0092;
BIFF_FNGROUPCOUNT = $009C;
BIFF_SCL = $00A0;
BIFF_SETUP = $00A1;
BIFF_MULRK = $00BD;
BIFF_MULBLANK = $00BE;
BIFF_BOOKBOOL = $00DA;
BIFF_XF = $00E0;
BIFF_MERGEDCELLS = $00E5;
BIFF_BITMAP = $00E9;
BIFF_MSODRAWINGGROUP = $00EB;
BIFF_MSODRAWING = $00EC;
BIFF_SST = $00FC;
BIFF_LABELSST = $00FD;
BIFF_DSF = $0161;
BIFF_SUPBOOK = $01AE;
BIFF_PROT4REV = $01AF;
BIFF_TXO = $01B6;
BIFF_REFRESHALL = $01B7;
BIFF_HLINK = $01B8;
BIFF_PROT4REVPASS = $01BC;
BIFF_DIMENSIONS = $0200;
BIFF_BLANK = $0201;
BIFF_NUMBER = $0203;
BIFF_BOOLERR = $0205;
BIFF_STRING = $0207;
BIFF_DEFAULTROWHEIGHT = $0225;
BIFF_WINDOW2 = $023E;
BIFF_RK = $027E;
BIFF_STYLE = $0293;
BIFF_FORMAT = $041E;
BIFF_SHRFMLA = $04BC;
BIFF_QUICKTIP = $0800;
BIFF_BOF = $0809;
CHART_UNITS = $1001;
CHART_CHART = $1002;
CHART_SERIES = $1003;
CHART_DATAFORMAT = $1006;
CHART_LINEFORMAT = $1007;
CHART_AREAFORMAT = $100A;
CHART_SERIESTEXT = $100D;
CHART_CHARTFORMAT = $1014;
CHART_LEGEND = $1015;
CHART_BAR = $1017;
CHART_LINE = $1018;
CHART_PIE = $1019;
CHART_AREA = $101A;
CHART_AXIS = $101D;
CHART_TICK = $101E;
CHART_VALUERANGE = $101F;
CHART_CATSERRANGE = $1020;
CHART_AXISLINEFORMAT = $1021;
CHART_DEFAULTTEXT = $1024;
CHART_TEXT = $1025;
CHART_FONTX = $1026;
CHART_OBJECTLINK = $1027;
CHART_FRAME = $1032;
CHART_BEGIN = $1033;
CHART_END = $1034;
CHART_PLOTAREA = $1035;
CHART_3D = $103A;
CHART_RADAR = $103E;
CHART_SURFACE = $103F;
CHART_RADARAREA = $1040;
CHART_AXISPARENT = $1041;
CHART_SHTPROPS = $1044;
CHART_SERTOCRT = $1045;
CHART_AXESUSED = $1046;
CHART_POS = $104F;
CHART_AI = $1051;
CHART_FBI = $1060;
CHART_AXCEXT = $1062;
CHART_PLOTGROWTH = $1064;
CHART_SIINDEX = $1065;
//------
BOOL_ERR_ID_NULL = $00;
BOOL_ERR_ID_DIV_ZERO = $07;
BOOL_ERR_ID_VALUE = $0F;
BOOL_ERR_ID_REF = $17;
BOOL_ERR_ID_NAME = $1D;
BOOL_ERR_ID_NUM = $24;
BOOL_ERR_ID_NA = $2A;
BOOL_ERR_STR_NULL = '#NULL!';
BOOL_ERR_STR_DIV_ZERO = '#DIV/0!';
BOOL_ERR_STR_VALUE = '#VALUE!';
BOOL_ERR_STR_REF = '#REF!';
BOOL_ERR_STR_NAME = '#NAME?';
BOOL_ERR_STR_NUM = '#NUM!';
BOOL_ERR_STR_NA = '#N/A';
GUID_OF_STD_LINK: array[1..16] of byte =
($D0, $C9, $EA, $79, $F9, $BA, $CE, $11,
$8C, $82, $00, $AA, $00, $4B, $A9, $0B);
HLINK_UNKNOWN_VALUE = $00000002;
GUID_OF_URL_MONIKER: array[1..16] of byte =
($E0, $C9, $EA, $79, $F9, $BA, $CE, $11,
$8C, $82, $00, $AA, $00, $4B, $A9, $0B);
GUID_OF_FILE_MONIKER: array[1..16] of byte =
($03, $03, $00, $00, $00, $00, $00, $00,
$C0, $00, $00, $00, $00, $00, $00, $46);
UNKNOWN_SEQUENCE1: array[1..24] of byte =
($FF, $FF, $AD, $DE, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00,
$00, $00, $00, $00, $00, $00, $00, $00);
UNKNOWN_SEQUENCE2: array[1..2] of byte =
($03, $00);
MSO_DGGCONTAINER = $F000;
MSO_BSTORECONTAINER = $F001;
MSO_DGCONTAINER = $F002;
MSO_SPGRCONTAINER = $F003;
MSO_SPCONTAINER = $F004;
MSO_DGG = $F006;
MSO_BSE = $F007;
MSO_DG = $F008;
MSO_SPGR = $F009;
MSO_SP = $F00A;
MSO_OPT = $F00B;
MSO_CLIENTTEXTBOX = $F00D;
MSO_CLIENTANCHOR = $F010;
MSO_CLIENTDATA = $F011;
MSO_BLIPSTART = $F018;
MSO_SPLITMENUCOLORS = $F11E;
MSO_SPID = $0401;
msosptHostControl = $C9;
msosptTextBox = $CA;
msosptPictureFrame = $4B;
OBJ_END = $00;
OBJ_CF = $07;
OBJ_PIOGRBIT = $08;
OBJ_NTS = $0D;
OBJ_CMO = $15;
BLIP_DIB = $07A8;
BLIP_JPEG = $046A;
BLIP_PNG = $06E0;
BLIP_WMF = $0216;
BLIP_EMF = $03D4;
type
TBOOL_ERR_STRINGS = array[0..6] of WideString;
const
BOOL_ERR_STRINGS: TBOOL_ERR_STRINGS =
(BOOL_ERR_STR_NULL, BOOL_ERR_STR_DIV_ZERO, BOOL_ERR_STR_VALUE,
BOOL_ERR_STR_REF, BOOL_ERR_STR_NAME, BOOL_ERR_STR_NUM, BOOL_ERR_STR_NA);
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;
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;
tkArea3D = [$3B, $5B, $7B];
XLS_STANDARD_PALETTE: array[0..55] of integer =
($000000, $003399, $003333, $003300, $663300, $800000, $993333, $333333,
$000080, $0066FF, $008080, $008000, $808000, $FF0000, $996666, $808080,
$0000FF, $0099FF, $00CC99, $669933, $CCCC33, $FF6633, $800080, $969696,
$FF00FF, $00CCFF, $00FFFF, $00FF00, $FFFF00, $FFCC00, $663399, $C0C0C0,
$CC99FF, $99CCFF, $99FFFF, $CCFFCC, $FFFFCC, $FFCC99, $FF99CC, $FFFFFF,
$FF9999, $663399, $CCFFFF, $FFFFCC, $660066, $8080FF, $CC6600, $FFCCCC,
$800000, $FF00FF, $00FFFF, $FFFF00, $800080, $000080, $808000, $FF0000);
XLS_COLOR_NAMES: array[0..55] of string =
('Black', 'Brown', 'Olive Green', 'Dark Green', 'Dark Teal', 'Dark Blue', 'Indigo', 'Gray-80%',
'Dark Red', 'Orange', 'Dark Yellow', 'Green', 'Teal', 'Blue', 'Blue-Gray', 'Gray-50%',
'Red', 'Light Orange', 'Lime', 'Sea Green', 'Aqua', 'Light Blue', 'Violet', 'Gray-40%',
'Pink', 'Gold', 'Yellow', 'Bright Green', 'Turquoise', 'Sky Blue', 'Plum', 'Gray-25%',
'Rose', 'Tan', 'Light Yellow', 'Liht Green', 'Light Turquoise', 'Pale Blue', 'Lavender', 'White',
'Color1', 'Color2', 'Color3', 'Color4', 'Color5', 'Color6', 'Color7', 'Color8',
'Color9', 'Color10', 'Color11', 'Color12', 'Color13', 'Color14', 'Color15', 'Color16');
COLOR_INDEX: array[0..55] of byte =
($08, $3C, $3B, $3A, $38, $12, $3E, $3F,
$10, $35, $13, $11, $15, $0C, $36, $17,
$0A, $34, $32, $39, $31, $30, $14, $37,
$0E, $33, $0D, $0B, $0F, $28, $3D, $16,
$2D, $2F, $2B, $2A, $29, $2C, $2E, $09,
$18, $19, $1A, $1B, $1C, $1D, $1E, $1F,
$20, $21, $22, $23, $24, $25, $26, $27);
{PATTERN_NAMES: array[0..47] of WideString =
('5%', '10%', '20%', '25%', '30%', '40%',
'50%', '60%', '70%', '75%', '80%', '90%',
'Light downward diagonal', 'Light upward diagonal',
'Dark downward diagonal', 'Dark upward diagonal',
'Wide downward diagonal', 'Wide upward diagonal',
'Light vertical', 'Light horizontal',
'Narrow vertical', 'Narrow horizontal',
'Dark vertical', 'Dark horizontal',
'Dashed downward diagonal', 'Dashed upward diagonal',
'Dashed horizontal', 'Dashed vertical',
'Small confetti', 'Large confetti',
'Zig zag', 'Wave', 'Diagonal brick', 'Horizontal brick', 'Weave', 'Plaid',
'Divot', 'Dotted grid', 'Dotted diamond', 'Shingle', 'Trellis', 'Sphere',
'Small grid', 'Large grid', 'Small checker board', 'Large checker board',
'Outlined diamond', 'Solid diamond');}
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
InternalNumberFormats: array[0..49] of WideString = (
'',
'0',
'0.00',
'#,##0',
'#,##0.00',
'_($#,##0_);($#,##0)',
'_($#,##0_);[Red]($#,##0)',
'_($#,##0.00_);($#,##0.00)',
'_($#,##0.00_);[Red]($#,##0.00)',
'0%',
'0.00%',
'0.00E+00',
'# ?/?',
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -