以前没碰过Ole,所以一点基础都没有.
上网搜索一下,人们都说用TExcelApplication,TExcelWorkbook,TExcelWorksheet三个控件最方便,所以就扒了一段例程,按我的程序的意思一跑,发现问题了,运行期间似乎总有一个随机的异常出现:Type mismatch(类型不匹配),而且出现与否,出现的时间地点都不确定,现在我的程序都成了轮盘赌了,faint!
更可恶的是,作为Delphi自带的标准控件,居然没有帮助,真是郁闷,所以只好请这里的高手帮帮忙了.这应该是一个网上流传的标准版吧:(创建一个Excel文件,由于我要连续创建N个Excel文件,所以这段程序需要连续调用多次,为了表述方便,省掉了一些必要的try)
    
    //1.Connect方法的动作有哪些?有没有创建新的实例?
    ExcelApplication1.Connect;
    ExcelApplication1.Visible[0]:=FALSE;    //2.这一句,那个0(Icid: integer)的用途是?如果重复调用,是否需要递增?
    ExcelApplication1.Workbooks.Add(Null,0);    
    //3.其实都是同一个问题,是否需要跟着递增?
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
    ExcelWorksheet1.Activate;    //添加数据部分    ExcelApplication1.ActiveWorkbook.SaveAs(...);
    ExcelApplication1.Disconnect;
    //4.Quit方法的作用是?是否杀死Excel进程(我觉得不太象),它跟Disconnect的区别是?
    ExcelApplication1.Quit;暂时先提4个问题(似乎是同一个,亏了,呵呵),望高手们不吝赐教,顿首叩谢!

解决方案 »

  1.   

    我进去看了一下VCL的源码,1,4解决了,请说说2,3,出现异常的时候,代码是停在2的,但2属于一个Interface,如何查看源码?再谢
      

  2.   

    delphi的这些控件只不过是把com接口封装了以下,用的都是ms的
    要帮助还是看ms的把
    //1.Connect方法的动作有哪些?有没有创建新的实例?
        ExcelApplication1.Connect;
        ExcelApplication1.Visible[0]:=FALSE看样子ExcelApplication1的autoconnect是false了
    你看看你的ExcelApplication1是不是啊