EXCEL的存储目录为:d:\
EXCEL的名称为test.xlsx
数据存储在 sheet1的 c3:e6这个区域数据存储样式如下
name code age
hf a001 17
hw a002 18
fw b001 20我想用SQL把相应数据取出来插入到SQL 2005数据库的TEST表中,其中TEST表的结构:
name code age

解决方案 »

  1.   


    procedure TForm1.downExcel(StringGrid: TStringGrid;FileName: String;Col,CheckCol : Integer);
    var
      AStrID : String;
      ARow,ACol,//指定读起Excel数据的行与列
      i,j,AMaxCol : Integer;
    begin
      AMaxCol := Col;
      StringGrid.ColCount := 1;
      StringGrid.RowCount := 1;
      FExcelApp := Unassigned;
      FExcelApp := CreateOleObject('Excel.Application');
      FWorkBook := CreateOleObject('Excel.Sheet');
      try
        FWorkBook := FExcelApp.WorkBooks.Open(FileName);
        FWSheet := FWorkBook.Sheets[1];
        ARow := 4;
        ACol := 3;
        PlShowMsg.Visible := True;
        while ARow<=6 do
        begin
          PlShowMsg.Caption :=  '导入条数...'+IntToStr(ARow);
          dataset.append;
          Application.ProcessMessages;
          dataset.FieldBYName('name').asString := FWSheet.cells[ARow,ACol].value;
          dataset.FieldBYName('code').asString := FWSheet.cells[ARow,ACol+1].value;
          dataset.FieldBYName('age').asString := FWSheet.cells[ARow,ACol+2].value;
          dataset.Post;
          Inc(ARow);
        end;
        PlShowMsg.Visible := False;
      finally
        FWorkBook := Unassigned;
        FExcelApp.WorkBooks.Close;
        FExcelApp.Quit;
        FExcelApp := Unassigned;
      end;
    end;
      

  2.   

    sqlexec( hConn, "insert into 目标表 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)")
      

  3.   

    我是想用SQL来取,呵呵!这么一长串程序,眼晕啊!呵呵
      

  4.   

    首先这个是取97/2003的语句,其次这里取的是某个SHEET的数据,没有定位到某个SHEET的某个区域(C3:E6这个区域)
      

  5.   


    OPENDATASOURCE
    OPENROWSET
    OPENQUERY
    其中一个