现在有一EXCEL文件,用ADOQUERY连接上去之后在DBGRID中已经显示出来,象SQL_SERVER的话就是当将EXCEL导入SQL SERVER的时候,第一行就自动变成了字段名,现在需要就是将一EXCEL文件更新一TABLE中的数据,请问哪为大侠做过????有操作EXCEL的语句都可以贴上来,谢谢!!!!

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2913/2913249.xml?temp=.5787012
      

  2.   

    读取EXCEL表: 
    procedure TstartForm.SpeedButton10Click(Sender: TObject); 
    var MSExcel:Variant; 
    begin 
    MSExcel:=CreateOLEObject('Excel.Application'); 
    MSExcel.WorkBooks.Add; 
    MSExcel.Visible:=True; for i:=5 to Query1.RecordCount+4 do 
    begin 
    MsExcel.Cells[i,1].value:=Query1.FieldByName('cpxhno').Asstring; 
    MsExcel.Cells[i,2].value:=Query1.FieldByName('cpname').Asstring; 
    MsExcel.Cells[i,3].value:=Query1.FieldByName('cpunit').Asstring; 
    MsExcel.Cells[i,4].value:=Query1.FieldByName('htnumber').Asstring; 
    MsExcel.Cells[i,5].value:=Query1.FieldByName('number').Asstring; 
    MsExcel.Cells[i,6].value:=Query1.FieldByName('ljno').Asstring; 
    end; 
    end; 退出Excel: 
    MSExcel.Quit; 
    MSExcel:=Unassigned; //释放VARIANT变 
    *************** 
    先加入ExcelApplication1;ExcelWorkbook1;ExcelWorksheet1; 
    procedure TForm1.n1Click(Sender: TObject); 
    var 
    row,brea:integer; 
    a,b,c,d,e:shortstring; 
    begin 
    if table1.active = True then begin 
    try 
    ExcelApplication1.Connect; 
    Except 
    ExcelApplication1.free; 
    Abort; 
    end; 
    brea := strtoint(inputbox('输入需导入行数!','行数','10')); 
    if brea<1 then brea := 10; 
    ProgressBar1.Visible := True; 
    ProgressBar1.Max := brea; 
    ExcelApplication1.Visible[0] := true; 
    for row := 2 to brea do 
    begin 
    a := ExcelWorksheet1.Cells.Item[row,2]; 
    b := ExcelWorksheet1.Cells.Item[row,1]; 
    c := ExcelWorksheet1.Cells.Item[row,3]; 
    d := ExcelWorksheet1.Cells.Item[row,4]; 
    e := ExcelWorksheet1.Cells.Item[row,5]; 
    form1.show; 
    table1.AppendRecord([a,b,c,d,e]); 
    ProgressBar1.Position := row-1; 
    end; 
    ProgressBar1.Hide; 
    end; 
    end; 
    ***************** 
    var 
    MSExcel: Variant; 
    i: Integer; 
    begin 
    OpenDialog1.Filter:='*.XLS|*.XLS'; 
    OpenDialog1.DefaultExt:='XLS'; 
    if OpenDialog1.Execute then 
    begin 
    MSExcel:=CreateOLEObject('Excel.Application'); 
    MSExcel.WorkBooks.Open(OpenDialog1.FileName); 
    MSExcel.Visible:=False; 
    //从有数据的行逐行读入数据 
    for i:=1 to MSExcel.ActiveSheet.UsedRange.Rows.Count do 
    begin 
    Edit2.Text:=Edit2.Text+MSExcel.Cells[i,1].Value; 
    end; 
    MSExcel.ActiveWorkBook.Close; 
    MSExcel.Quit; 
    end; 
    end; 
    附:
    procedure TForm1.Button1Click(Sender: TObject); 
    var 
    ExcelApp: Variant; 
    S: string; 
    begin 
    ExcelApp := CreateOleObject( 'Excel.Application' );; 
    ExcelApp.Visible := True; 
    ExcelApp.WorkBooks.Open( 'C:\Demo.xls' ); 
    ExcelApp.WorkSheets[1].Activate; 
    S := ExcelApp.Cells[2,2].Value; 
    ShowMessage(S); 
    end;