各位大侠朋友好:
    我刚开始学习delphi6,用的是sql server2000数据库,由于书上没有讲解关于调用excel的部分,因此一直不懂这一部分。我前后花了接近300分也没有一个朋友给我讲解清楚。希望各位朋友能否给我讲解一下(加写注释即可)。我做了一点,给指正一下,分不够我可以再加。谢谢!
    我在窗体上放置了一个button1,从severs组件中取了ExcelApplication1、ExcelWorkbook1、ExcelWorkSheet1三个控件,然后在桌面上建立一个“新建文件夹”,其中做了一个ceshi.xls(excel表),然后写代码如下:procedure TfmBJForm.DyButtonClick(Sender: TObject);
  begin
     ExcelApplication1.Connect;
     ExcelApplication1.Visible[0]:=true;
     ExcelApplication1.Caption := '补退管理程序';
     ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add       
             (EmptyParam,0));//能否讲解一下这句的意思
                             //(EmptyParam,0)]是什么意思?    //打开已存在的工作簿:
    ExcelApplication1.Workbooks.Open ('C:\windows\desktop\新建文件夹
             ceshi.xls' ,EmptyParam,EmptyParam,EmptyParam,
             EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
             EmptyParam,EmptyParam,EmptyParam,EmptyParam, 0);
            //能否解释一下此处为什么有那么多的“EmptyParam”,什么意思?    ExcelApplication1.Cells[1,4].Value := '?';
            //疑问1:运行时到此停止,"cells"有问题吗?
            //疑问2:如果将[1,4]去掉,则将整个区域全部填满“?”
            //疑问3:填充时出现两个excel(一个是book1、一个是ceshi.xls)
  
  end;

解决方案 »

  1.   

    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add       
                 (EmptyParam,0));
    如果没有这句话没有表格(没有打开真正的电子表格)。
    下边的市函数的要求open函数的参数,且参数的类型都是olevariant
      

  2.   

    //Excel的单元格拷贝粘贴
    procedure Excel_copyCells;
    var
      sheet,XLApp,workbook,myRange1 ,myRange2: variant;
    begin
      try
        //创建对象
        XLApp:=createOleObject('Excel.Application');
          XLApp.displayAlerts:=true;
          XLApp.ScreenUpdating:=true;
        XLApp.visible:=true;
        XLApp.WorkBooks.Add('D:\Test.xls');
        workbook := XLApp.workbooks[1];
        sheet:=workbook.worksheets[1];
        myRange1:=sheet.Range[sheet.cells[39,1],sheet.cells[79,16]];
        myRange2:=sheet.Range[sheet.cells[80,1],sheet.cells[120,16]];
        myRange1.Copy(myRange2) ;
      finally
        if not VarIsEmpty(XLApp) then begin
          XLApp.displayAlerts:=false;
          XLApp.ScreenUpdating:=true;
          XLApp.quit;
        end;
      end;
    end;
      

  3.   

    procedure Excel_copyCells是一个事件吗?窗体上如何设置?
      

  4.   

    ?(拔剑四顾心茫然):
    procedure Excel_copyCells是一个事件吗?窗体上如何设置?我用控件不能实现吗?