在下,有点小问题咨询老师们,,,,,,excel表一中多个字段,,其中把某几个字段,读到ACCESS表中的某几个字段,,,用循环赋值,好慢,,,,怎么用insert into 直接批量一下导入到表中。。SQL 怎么写 
在下用的 ADO ,,,adoquery1 对应excel的表,,ADOQUERY2对应 ACCESS中的表

解决方案 »

  1.   

    excel可以象普通数据库那样操作,用ado连接即可
      

  2.   

    uses ADODB,excelXP,adoint; function TForm1.ExportToExcel: Boolean; 
    var 
      xlApp,xlBook,xlSheet,xlQuery: Variant; 
      adoConnection,adoRecordset: Variant; 
    begin 
      adoConnection := CreateOleObject('ADODB.Connection'); 
      adoRecordset := CreateOleObject('ADODB.Recordset'); 
      adoConnection.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Tree.mdb;Persist Security Info=False'); 
      adoRecordset.CursorLocation := adUseClient; 
      adoRecordset.Open('SELECT * FROM tree',adoConnection,1,3);   try 
        xlApp := CreateOleObject('Excel.Application'); 
        xlBook := xlApp.Workbooks.Add; 
        xlSheet := xlBook.Worksheets['sheet1']; 
        
        //设置这一列为 文本列 ,让 "00123" 正确显示, 而不是自动转换为"123" 
        xlSheet.Columns['C:C'].NumberFormatLocal := '@';     xlApp.Visible := True;     //把查询结果导入EXCEL数据 
        xlQuery := xlSheet.QueryTables.Add(adoRecordset,xlSheet.Range['A1']);  //关键是这一句 
        xlQuery.FieldNames := True; 
        xlQuery.RowNumbers := False; 
        xlQuery.FillAdjacentFormulas := False; 
        xlQuery.PreserveFormatting := True; 
        xlQuery.RefreshOnFileOpen := False; 
        xlQuery.BackgroundQuery := True; 
        //xlQuery.RefreshStyle := xlInsertDeleteCells; 
        xlQuery.SavePassword := True; 
        xlQuery.SaveData := True; 
        xlQuery.AdjustColumnWidth := True; 
        xlQuery.RefreshPeriod := 0; 
        xlQuery.PreserveColumnInfo := True; 
        xlQuery.FieldNames := True; 
        xlQuery.Refresh;     xlBook.SaveAs('d:\fromD.xls',xlNormal,'','',False,False);   finally 
        if not VarIsEmpty(XLApp) then begin 
          XLApp.displayAlerts:=false; 
          XLApp.ScreenUpdating:=true; 
          XLApp.quit; 
        end; 
      end; 
    end;