我想从Excel中把数据导入到SQL Server,但是:
procedure TForm1.btnimportxlsClick();
var
  fname,s:string;
  i,j:integer;
  WorkSheet,WorkBook,MsExcel:variant;
begin
 j:=0;
   MsExcel := CreateOleObject('Excel.Application');
   WorkBook := MsExcel.Application;
 if openDialog1.Execute then
   begin
    Fname:=openDialog1.FileName;
      WorkBook.WorkBooks.Open(Fname);
      WorkBook.Visible := False;
      MsExcel.Visible := true;
      WorkSheet := WorkBook.ActiveSheet;
       for i:=1 to WorkSheet.UsedRange.Rows.count do
        begin
          DataModule1.adoquery1.Close;
          DataModule1.adoquery1.SQL.Clear;
          DataModule1.adoquery1.SQL.Add('select 导出时间 from aaa where 导出时间='+inttostr(WorkSheet.Cells.Item[i,1]));  //--就是这里出错!!!
          DataModule1.adoquery1.Open;
    ... 
编译时没有问题,但是运行到 那一句时却报“cannot convert variant of Type(Dispatch) into type(integer)”
这是怎么回事?//////////////////////////////////////////
另外,请问要用到TExcelApplication必须USE哪个文件?我很着急,请大侠不吝赐教!谢谢!

解决方案 »

  1.   

    用到TExcelApplication必须USE:excel2000,OleServer
      

  2.   

    谢谢你!
    还有一个问题,怎么获得Excel的sheet,workbooks,application的名称呢?
      

  3.   

    怎么获得Excel的sheet,workbooks,application的名称呢?
      

  4.   

    這樣行不?
    inttostr(WorkSheet.Cells.Item[i,1].value)
      

  5.   

    frogshero(三波萝):谢谢你了,我用:
    varastype(WorkSheet.Cells.item[1,i],varstring)搞定了!剩余问题是:
    怎么获得Excel的sheet,workbooks,application的名称呢?