long c=0; char s[100]; __int8 b=0x0; __int16 w=0x0; div_t pt;
unsigned short XLSBOF[5] = {0x409, 6, 0, 0x10, 0};
unsigned short XLSGUTS[6] = {0x80, 8, 0, 0, 0, 0};
unsigned short XLSPalette[3] = {0x92, 54, 13};
unsigned char XLSFONT[10] = {0x31, 2, 0, 0, 0, 0, 0, 0, 0, 0};
unsigned char XLSFONTH[10] = {0x31, 2, 0, 0, 0, 0, 0, 0, 8, 0};
unsigned char XLSFONTG[10] = {0x31, 2, 0, 0, 0, 0, 0, 0, 10, 0};
unsigned char XLSSFont[16]={0x31, 2, 0x0C, 0, 0xC8, 0, 0, 0, 0xFF, 0x7F, 5, 0x41, 0x72, 0x69, 0x61, 0x6C};
unsigned char XLSXF1[16]={0x43, 4, 0x0C, 0, 0, 0, 0xF5, 0xFF, 0x20, 0, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF2[16]={0x43, 4, 0x0C, 0, 1, 0, 0xF5, 0xFF, 0x20, 0xF4, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF3[16]={0x43, 4, 0x0C, 0, 2, 0, 0xF5, 0xFF, 0x20, 0xF4, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF4[16]={0x43, 4, 0x0C, 0, 0, 0, 0xF5, 0xFF, 0x20, 0xF4, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF5[16]={0x43, 4, 0x0C, 0, 0, 0, 1, 0, 0x20, 0, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF6[16]={0x43, 4, 0x0C, 0, 1, 0x21, 0xF5, 0xFF, 0x20, 0xF8, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF7[16]={0x43, 4, 0x0C, 0, 1, 0x1F, 0xF5, 0xFF, 0x20, 0xF8, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF8[16]={0x43, 4, 0x0C, 0, 1, 0x20, 0xF5, 0xFF, 0x20, 0xF8, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF9[16]={0x43, 4, 0x0C, 0, 1, 0x1E, 0xF5, 0xFF, 0x20, 0xF8, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF10[16]={0x43, 4, 0x0C, 0, 1, 0x0D, 0xF5, 0xFF, 0x20, 0xF8, 0, 0xCE, 0, 0, 0, 0};
unsigned char XLSXF[16] = {0x43, 4, 0x0C, 0, 5, 0, 1, 0, 0x21, 0x78, 0x41, 3, 0, 0, 0, 0};
unsigned char XLSXFB[16] = {0x43, 4, 0x0C, 0, 8, 0, 1, 0, 0x22, 0x78, 0x41, 2, 0x71, 0x71, 0x71, 0};
unsigned char XLSXFH[16] = {0x43, 4, 0x0C, 0, 6, 0, 1, 0, 0x22, 0x78, 0x41, 2, 0x71, 0x71, 0x71, 0x71};
unsigned char XLSXFG[16] = {0x43, 4, 0x0C, 0, 7, 0, 1, 0, 0x21, 0x78, 0xC1, 2, 0, 0, 0, 0};
unsigned char XLSXFF[16] = {0x43, 4, 0x0C, 0, 5, 0, 1, 0, 0x22, 0x78, 0xC1, 2, 0xB9, 0xB9, 0xB9, 0xB9};
unsigned char XLSXFF1[16] = {0x43, 4, 0x0C, 0, 5, 0, 1, 0, 0x22, 0x78, 0xC1, 2, 0xB9, 0, 0xB9, 0};
unsigned char XLSXFRF[16] = {0x43, 4, 0x0C, 0, 9, 0, 1, 0, 0x21, 0x78, 0xC1, 2, 0xB9, 0xB9, 0xB9, 0xB9};
unsigned char XLSXFRF1[16] = {0x43, 4, 0x0C, 0, 9, 0, 1, 0, 0x21, 0x78, 0xC1, 2, 0xB9, 0, 0xB9, 0};
unsigned short XLSDimension[7] = {0x200, 0x0A, 0, 0xFFFF, 0, 0xFF, 0};
unsigned short XLSCOL[8] = {0x7D, 0x0C, 0, 0, 0, 0xF, 0, 0};
unsigned short XLSLabel[6] = {0x204, 0, 0, 0, 0, 0};
unsigned short XLSBlank[5] = {0x201, 6, 0, 0, 0x17};
unsigned short XLSBlankF[5] = {0x201, 6, 0, 0, 0x19};
unsigned short XLSBlankRF[5] = {0x201, 6, 0, 0, 0x1C};
unsigned short XLSNumber[5] = {0x203, 14, 0, 0, 0};
unsigned short XLSRK[5] = {0x27E, 10, 0, 0, 0};
unsigned short XLSFormula[16] ={0x406, 0x1D, 0, 0, 0x18, 0, 0, 0, 0, 3, 0x0B, 0x25, 0, 0, 0, 0};
unsigned short XLSEOF[2] = {0x0A, 0};
FILE* fh;
if ( (fh=fopen("E:\\COM\\Delphi\\bak\\Excel4\\1.xls","w+b")) == NULL)
{
break;
}
fwrite(XLSBOF,2,5,fh);//10
fwrite(XLSGUTS,2,6,fh);//12
fwrite(XLSPalette,2,3,fh);//6
//颜色 (RGB) 每色占2位
//0xFFFFFF 白色
//0x000000 黑色
c=0xFF0202; fwrite(&c,4,1,fh);//4 HeaderFont.Color 首行 字体 蓝色
c=0x007D7D; fwrite(&c,4,1,fh);//4 HeaderColor 底部 深黄绿色
c=0x000000; fwrite(&c,4,1,fh);//4 GroupNodeTextColor 尾行 字体 嘿色
c=0xFF8080; fwrite(&c,4,1,fh);//4 GroupNodeColor 底部 紫色
c=0x000000; fwrite(&c,4,1,fh);//4 Font.Color 数据 字体 嘿色
c=0xDFFFFF; fwrite(&c,4,1,fh);//4 Color 底部 土黄色
c=0x000000; fwrite(&c,4,1,fh);//4 clWindowFrame
c=0xFFFFFF; fwrite(&c,4,1,fh);//4 clWindow
c=0x000000; fwrite(&c,4,1,fh);//4 BandFont.Color
c=0xFFFFFF; fwrite(&c,4,1,fh);//4 BandColor
c=0x000000; fwrite(&c,4,1,fh);//4 RowFooterTextColor
c=0xFFFFFF; fwrite(&c,4,1,fh);//4 RowFooterColor
c=0x000000; fwrite(&c,4,1,fh);//4 GridLineColor
// EXCEL Font 系统默认字体
fwrite(XLSSFont,1,16,fh);//16
fwrite(XLSSFont,1,16,fh);//16
fwrite(XLSSFont,1,16,fh);//16
fwrite(XLSSFont,1,16,fh);//16
// Grid Font
// 底部字体 18
{
wsprintf(s,"Microsoft Sans Serif");
b=__int8(strlen(s));
pt=div( 12*20,256 ); //12磅字体
XLSFONT[2] = b+7;
XLSFONT[4] = pt.rem;
XLSFONT[5] = pt.quot;
XLSFONT[6] = 1; //粗体
XLSFONT[8] = 12;
fwrite(XLSFONT,1,10,fh);
fwrite(&b,1,1,fh);
fwrite(s,1,b,fh);
}
//
// 设定列头(行顶部)字体 单元格(0,0)
// XLSFONT[6]值 ( 0正常体 1粗体 2斜体 4底线 8叉线 )
{
wsprintf(s,"Arial");
b=__int8(strlen(s));
pt=div( 16*20,256 ); //12磅字体
XLSFONTH[2] = b+7;
XLSFONTH[4] = pt.rem;
XLSFONTH[5] = pt.quot;
XLSFONTH[6] = 1; //粗体
fwrite(XLSFONTH,1,10,fh);
fwrite(&b,1,1,fh);
fwrite(s,1,b,fh);
}
// Group Font
{
wsprintf(s,"Microsoft Sans Serif");
b=__int8(strlen(s));
pt=div( 8*20,256);
XLSFONTG[2] = b+7;
XLSFONTG[4] = pt.rem;
XLSFONTG[5] = pt.quot;
XLSFONTG[6] = 1;
fwrite(XLSFONTG,1,10,fh);
fwrite(&b,1,1,fh);
fwrite(s,1,b,fh);
}
// Band Font
{
wsprintf(s,"MS Gothic");
b=__int8(strlen(s));
pt=div( 8*20,256 );
XLSFONT[2] = b+7;
XLSFONT[4] = pt.rem;
XLSFONT[5] = pt.quot;
XLSFONT[6] = 1;
XLSFONT[8] = 16;
fwrite(XLSFONT,1,10,fh);
fwrite(&b,1,1,fh);
fwrite(s,1,b,fh);
}
// Footer Font
{
wsprintf(s,"Modern");
b=__int8(strlen(s));
pt=div(160,256);
XLSFONT[2] = b+7;
XLSFONT[4] = pt.rem;
XLSFONT[5] = pt.quot;
XLSFONT[6] = 1;
XLSFONT[8] = 18;
fwrite(XLSFONT,1,10,fh);
fwrite(&b,1,1,fh);
fwrite(s,1,b,fh);
}
//
// 设定每列字体
// XLSFONT[6]值 ( 0正常体 1粗体 2斜体 4底线 8叉线 )
int i;
for( i=0;i<3;i++)
{
wsprintf(s,"Sylfaen");
b=__int8(strlen(s));
XLSFONT[2] = b+7;
pt=div(10*20,256); //10磅字体
XLSFONT[4] = pt.rem;
XLSFONT[5] = pt.quot;
XLSFONT[6] = 0; //正常体
XLSFONT[8] = 12;
fwrite(XLSFONT,1,10,fh);
fwrite(&b,1,1,fh);
fwrite(s,1,b,fh);
}
fwrite(XLSXF1,1,16,fh);
fwrite(XLSXF2,1,16,fh);
fwrite(XLSXF2,1,16,fh);
fwrite(XLSXF3,1,16,fh);
fwrite(XLSXF3,1,16,fh);
for(i=0;i<10;i++)
{
fwrite(XLSXF4,1,16,fh);
}
fwrite(XLSXF5,1,16,fh);
fwrite(XLSXF6,1,16,fh);
fwrite(XLSXF7,1,16,fh);
fwrite(XLSXF8,1,16,fh);
fwrite(XLSXF9,1,16,fh);
fwrite(XLSXF10,1,16,fh);
XLSXF[12]=0xA7; //0xA7 细点线 0xA1线
XLSXF[13]=0xA7; //0xA7 细点线 0xA1线
XLSXF[14]=0xA7; //0xA7 细点线 0xA1线
XLSXF[15]=0xA7; //0xA7 细点线 0xA1线
fwrite(XLSXF,1,16,fh);
fwrite(XLSXFH,1,16,fh);
fwrite(XLSXFG,1,16,fh);
fwrite(XLSXFF,1,16,fh);
fwrite(XLSXFF1,1,16,fh);
fwrite(XLSXFB,1,16,fh);
fwrite(XLSXFRF,1,16,fh);
fwrite(XLSXFRF1,1,16,fh);
//
// 设定每列对齐方式
// XLSXF[8]取值 ( 左=0x21 中=0x22 右=0x23 )
for (i=0;i<3;i++)
{
XLSXF[4] = i+10;
if (i==2)
{
XLSXF[8] = 0x23; //置中
}
else
{
XLSXF[8] = 0x21; //置左
}
fwrite(XLSXF,1,16,fh);
}
//
// 设定每列宽度
// XLSCOL[4]取值 36 * 每列宽度
for(i=0;i<3;i++)
{
XLSCOL[2] = i;
XLSCOL[3] = i;
XLSCOL[4] = 36*220; //列宽150
fwrite(XLSCOL,2,8,fh);
}
fwrite(XLSDimension,2,7,fh);
//
// 写入每列头部 可以省略
for(i=0;i<3;i++)
{
_itoa( rand() ,s,16);
w=(__int16)strlen(s);
XLSLabel[1] = w+8;
XLSLabel[2] = 0; //行数 第一行
XLSLabel[3] = i; //列数
XLSLabel[4] = 0x16 ;
XLSLabel[5] = w;
fwrite(XLSLabel,2,6,fh);
fwrite(s,1,w,fh);
}
// 写入记录值 可以省略
//char字符串
for(int i=1;i<50;i++)
{
wsprintf(s,"二进制 ");
_itoa( rand() ,&s[7],2);
w=(__int16)strlen(s);
XLSLabel[1] = w+8;
XLSLabel[2] = i; //行数
XLSLabel[3] = 0; //列数
XLSLabel[4] = 0x1D+0;
XLSLabel[5] = w;
fwrite(XLSLabel,2,6,fh);
fwrite(s,1,w,fh);
}
//Double双精度
double f;
for(int i=1;i<50;i++)
{
f=rand()/3.2;
XLSNumber[2]=i; //行数
XLSNumber[3]=1; //列数
XLSNumber[4]=0x1D+1;
fwrite(XLSNumber,2,5,fh);
fwrite(&f,8,1,fh);
}
//int数值
__int32 nt;
for(int i=1;i<50;i++)
{
nt=rand();
nt<<=2;
nt+=2;
XLSRK[2]=i; //行数
XLSRK[3]=2; //列数
XLSRK[4]=0x1D+2;
fwrite(XLSRK,2,5,fh);
fwrite(&nt,4,1,fh);
}
/**/
_itoa( rand() ,s,16);
w=(__int16)strlen(s);
XLSLabel[1] = w+8;
XLSLabel[2] = 55; //行数 第一行
XLSLabel[3] = 2; //列数
XLSLabel[4] = 0x18 ;
XLSLabel[5] = w;
fwrite(XLSLabel,2,6,fh);
fwrite(s,1,w,fh);
//Excel End
fwrite(XLSEOF,2,2,fh);
fclose(fh);