Spiga

特别推荐:纯VB.NET代码直接生成Excel文件(不需要Excel)

2004-07-07 16:11 by 灵感之源, 42316 visits, 收藏, 编辑
几年前看见一VB6代码,直接生成Excel文件(不需要Excel),最近把它改写成VB.NET,支持简体中文。

原理:根据以公开的BIFF2.1文件格式,直接Binary写Excel文件。

效果:

下载:http://files.cnblogs.com/unruledboy/Smart%20Excel%20Lib.zip

另外,鞠强网友写了一个C#版本:http://www.cnblogs.com/juqiang/archive/2004/07/08/22255.aspx

http://files.cnblogs.com/unruledboy/smartexcel.rar
Add your comment

66 条回复

  1. #1楼 郑彬2004-07-07 16:20
    真是牛比,我想要C#的,不知道有没有,我搞不懂VB转换到C#的方法。
     回复 引用   
  2. #2楼 myrat2004-07-07 16:22
    还没仔细看,第一感觉是,太厉害了
    楼上的试试看vb->c# converter吧
     回复 引用   
  3. #3楼 unruledboy(灵感之源)2004-07-07 16:27
    vb.net->C#的工具很多,SharpDevelop最新版本可以
     回复 引用   
  4. #4楼 steeven2004-07-07 21:53
    什么原理啊?贴了一堆代码,懒得看呀 :$
     回复 引用   
  5. #5楼 Threading2004-07-07 22:03
    是不是已知Excel的文件格式啊。
     回复 引用   
  6. #6楼 zhaixd2004-07-08 09:58
    不好意思,给你9分的,点错到1分上面去了
     回复 引用   
  7. #7楼 unruledboy(灵感之源)2004-07-08 10:05
    没有问题,再点一次9就好;)
     回复 引用   
  8. #8楼 Loki2004-08-26 17:11
    跟用模版相比,数据插入和格式化会不会更麻烦?
     回复 引用   
  9. #9楼 birdshome2004-08-27 19:55
    这个BIFF2.1太old,好像不支持边框效果,还有合并单元格不知道行不行?
     回复 引用   
  10. #10楼 胡明[未注册用户]2004-09-23 10:28
    大伙有没有试过用C#操作Excel COM来生成各种数据图形的呢,最近我一直在研究,不过没有什么头绪,只好先从微软站点上下载一个VBA来看看,希望从中能找到一点思路。
     回复 引用   
  11. #11楼 mys[未注册用户]2004-10-14 11:24
    我用C#写了个调用Excel com 来生成Excel文件的程序,已经成功了(没有用模板)但是excel进程杀不了!!郁闷啊!!!有人知道杀Excel进程吗?
     回复 引用   
  12. #12楼[楼主] 灵感之源      2004-10-14 11:40
    问博客堂的lostinnet吧。他实现过。
     回复 引用 查看   
  13. #13楼 Jack2004-10-15 09:33
    用Dcomcnfg杀进程
     回复 引用   
  14. #14楼 春天水中的鱼2004-11-07 09:45
    你还真厉害。怎么用C#生成模板?
     回复 引用   
  15. #15楼 soaring2004-11-28 18:14
    好像ASP.NET下使用无效
     回复 引用   
  16. #16楼 wf2005-01-21 13:34
    纯VB.NET代码直接生成word怎么做???
     回复 引用   
  17. #17楼 Danny2005-03-17 14:05
    很牛~

    我在用你的代码,不会追究我的责任吧?呵呵~
     回复 引用   
  18. #18楼 zhou2005-03-22 16:09
    为什么我用时,字符串少的时候导入没有问题,字符串200多字以上时,excel里边没有任何字符。为什么啊???????????????????????????????????????????
     回复 引用   
  19. #19楼 qhcyx2005-03-23 16:35
    上面的大虾,怎么可以不用模板,用C#就生成excel?
     回复 引用   
  20. #20楼 deli[未注册用户]2005-04-03 00:01
    哦!这个好方法,.net 现在还是不错的!!
     回复 引用   
  21. #21楼 yinh      2005-04-07 15:12
    今天正好要用到写excel的,顺便就看了看。但是可能不符合我的要求,因为我想写一个拥有多个sheet的excel文件,不知道这个组件可不可以做到。
     回复 引用 查看   
  22. #22楼 David,Qi2005-04-09 18:32
    我写了个可以一个拥有多个sheet的XML文件(可以用Excel2003,XP等打开,完全不用Excel,而是直接写入到XML)但是客户使用的还是Office97,不知如何将XML再转换为XLS。不知哪位有高见。

    纯VB.NET代码直接生成Excel文件(不需要Excel)的方法不支持合并单元格、Formula Cell 以及多Sheet.

    目前的Excel文件格式远比BIFF2.1复杂。



     回复 引用   
  23. #23楼 wildfish2005-04-13 23:19
    谢谢你的smartexcel,虽然我用的是c#版的,也感谢那位仁兄:)
     回复 引用   
  24. #24楼 ttyp      2005-05-30 16:09
    http://www.freevbcode.com/ShowCode.asp?ID=6856
    这里有个BIFF8格式的
     回复 引用 查看   
  25. #25楼 心雨[未注册用户]2005-06-03 09:34
    http://www.cnblogs.com/Files/unruledboy/Smart%20Excel%20Lib.zip 下载后为什么打不开?
     回复 引用   
  26. #26楼 雅雅[未注册用户]2005-07-08 16:48
    如果能够像owc10一样能支持Sql语句绑定数据就更好了
     回复 引用   
  27. #27楼 xiaobetter[未注册用户]2005-07-19 08:36
    先说一声谢谢啦,vb.net真的很喜欢。希望我也能有Aganippe
     回复 引用   
  28. #28楼 jieson[未注册用户]2005-07-19 21:12
    如果要设置字体颜色可以做到吗?我正在想如何解决这个问题:(
     回复 引用   
  29. #29楼 feng[未注册用户]2005-08-24 15:48
    问:如何合并单元格呢?
     回复 引用   
  30. #30楼 11[未注册用户]2005-09-23 15:34
    怎么添加公式
     回复 引用   
  31. #31楼 hello[未注册用户]2005-09-25 22:06
    作为一个业余使用者请教一下
    我学经济管理的,在公司主要做计划和报表,一直使用Word & Excel就能完成工作。今年领导安排给我一个新任务,统计和分析预算量。好像Excel不能完成这样的工作。如果必须学习编程语言的话VB.NET,C#.NET,JAVA,C++哪一个容易学?原来的计算机编程知识都还给老师了。:)
    看了众多的帖子,好像VB.NET没有C#.NET专业,而且不是主流语言?(朋友说C++和JAVA才是主流)我主要考虑容易学习,方便使用。不在乎程序的执行效率。我怎么选择呀?VB.NET,C#.NET,JAVA,C++? 谢谢啦!! (顺便问一下,VB.NET2005是不是更加容易学习啦?)

    我的联系方式: lj110104@msn.com
     回复 引用   
  32. #32楼 坐看云起      2005-10-14 14:14
    把六合彩广告删了吧。过分了。
     回复 引用 查看   
  33. #33楼 BabyGrilTany[未注册用户]2005-10-31 18:29
    什么都看不到~ :(
     回复 引用   
  34. #34楼 黄二爷[未注册用户]2005-11-13 15:32
    哥们,用你这个代码我遇到一个问题,就是"®"等特殊字符写到excel中就变成了问号了,这个有什么办法可以解决,谢谢
     回复 引用   
  35. #35楼 不会飞的鱼      2006-02-15 11:25
    强人啊, 顶一个!!
     回复 引用 查看   
  36. #36楼 smilewu[未注册用户]2006-03-30 14:18
    我用反射方法,通过后期绑定,可以动态实现操作Execl!
    是用纯C#实现的,实现的功能很多!
    有需要的可以联系我!
     回复 引用   
  37. #37楼 mksoft[未注册用户]2006-03-31 23:42
    @smilewu

    有问题想请教你,你都没有联系方式
     回复 引用   
  38. #38楼 蓝天[未注册用户]2006-04-12 00:07
    恳请赐教!!
     回复 引用   
  39. #39楼 linruibin[未注册用户]2006-04-26 02:41
    @smilewu
    谢谢你,我正急用向Excel中输入数据。我用的是C# ,office2003,不知道怎么引用COM组件,我在里面找不到,谢谢赐教
    我的邮箱ruibinlin@yahoo.com.cn

     回复 引用   
  40. #40楼 little ge[未注册用户]2006-05-09 10:15
    请问可以给我vb的源码吗?
    gelinqing@gmail.com
     回复 引用   
  41. #41楼 jiemupig[未注册用户]2006-05-31 15:01
    可以实现工作簿中创建多个工作表吗.
     回复 引用   
  42. #42楼 luoyuhua_2000[未注册用户]2006-06-19 10:41
    请问你的那个VB6的代码是在那儿可以下呢,或者能不能邮一份给我,我的邮箱
    luoyuhua_2000@163.com
     回复 引用   
  43. #43楼 辛[未注册用户]2006-07-07 09:26
    不错,慢慢研究
     回复 引用   
  44. #44楼 zyb[未注册用户]2006-07-19 14:17
    可以生成复杂的Excel表吗?就是合并单元格和加底色等等。
     回复 引用   
  45. #45楼 zyb[未注册用户]2006-07-19 14:17
    可以生成复杂的Excel表吗?就是合并单元格和加底色等等。
    zhaiyabin@126.com
     回复 引用   
  46. #46楼 zyb[未注册用户]2006-07-19 14:17
    可以生成复杂的Excel表吗?就是合并单元格和加底色等等。
    zhaiyabin@126.com
     回复 引用   
  47. #47楼 zhanggang[未注册用户]2006-07-24 16:10
    可以给我vb的代码吗,万分感激!
    springsimba@163.com
     回复 引用   
  48. #48楼 rockylee[未注册用户]2006-08-24 21:56
    什么都看不到啊。
     回复 引用   
  49. #49楼 zyb[未注册用户]2006-09-11 14:00
    如何使用这个控件进行模板生成?[可以实现吗?]
     回复 引用   
  50. #50楼 ldd[未注册用户]2006-09-11 20:21
    @smilewu
    您好:您在论坛上说您用的反射方法生成的execl文件,能否指教一下
    我的邮箱:lddyuhb@163.com
     回复 引用   
  51. #51楼 EXCEL4.0[未注册用户]2006-09-25 17:23
    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};

     回复 引用   
  52. #52楼 EXCEL4.0[未注册用户]2006-09-25 17:24
    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);
    }
     回复 引用   
  53. #53楼 EXCEL4.0[未注册用户]2006-09-25 17:25
    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);
     回复 引用   
  54. #54楼 EXCEL4.0[未注册用户]2006-09-25 17:27

    这是Delphi下 dxDBGrid 实现方法

    转换成C语法的实现

    请将上面3个部分合在一起 用VC ,BC 编译即可

    EXCEL 2000版的还在研究中
     回复 引用   
  55. #55楼 EXCEL4.0[未注册用户]2006-09-25 17:34
    http://www.freevbcode.com/ShowCode.asp?ID=6856

    上面地址是VB代码的实现 支持 EXCEL 97 2000版本

    同时可以实现合病格格等等

     回复 引用   
  56. #56楼 Now[未注册用户]2007-01-22 11:23
    上面地址是VB代码的实现 支持 EXCEL 97 2000版本

    但当生成含有中文的字符时,出现乱码,不支持中文,如何解决????????
     回复 引用   
  57. #57楼 DATE[未注册用户]2007-03-29 10:21
    怎么预览打印呀,,
     回复 引用   
  58. #58楼 bearhunter      2007-05-19 19:20
    good
     回复 引用 查看   
  59. #59楼 等待[未注册用户]2007-09-28 13:13
    写的不错啊http://www.baidu.com/
     回复 引用   
  60. #60楼 地方[未注册用户]2007-11-15 19:08
    请问文件超过65535行,如何处理啊?
     回复 引用   
  61. #61楼 litterhaw[未注册用户]2008-09-03 09:04
    @hello
    你用VBA啊,直接在Word、Excel里操作,去市面买本书就是了。
     回复 引用   
  62. #62楼 徐文兵      2008-09-12 14:42
    又是一个Hello Word !
     回复 引用 查看   
  63. #63楼 坐井观天      2010-04-08 14:26
    楼主,你好
    在WriteValue方法里把输入字符串的长度由int强制转化成了byte,也就是每个单元格输入的长度不能大于255,请问可以写更长的文本吗?
     回复 引用 查看   
  64. #64楼[楼主] 灵感之源      2010-04-08 14:47
    @坐井观天
    http://code.google.com/p/excellibrary/

    或者 http://sourceforge.net/projects/myxls/
     回复 引用 查看   
  65. #65楼 坐井观天      2010-04-08 14:56
    多谢楼主
     回复 引用 查看