现在的位置: 首页 > 综合 > 正文

导入EXCEL到数据库中

2011年05月27日 ⁄ 综合 ⁄ 共 1307字 ⁄ 字号 评论关闭
 

procedure Import(SourceDS, DestDS: Tadoquery);
var
  sFileName, sTableName: string;
  sl: TStringList;
  i: integer;
  conn: TADOConnection;
  dialog: TOpenDialog;
begin
  dialog := TOpenDialog.Create(Application);
  if not dialog.Execute then Exit;
  try
    sFileName := dialog.FileName;
    conn := TADOConnection.Create(Application);
    conn.Connected := False;
    conn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' +
      sFileName + ';Extended Properties="Excel 8.0;IMEX=1";Persist Security Info=False';
    conn.Connected := True;
    sl := TStringList.Create;
    conn.GetTableNames(sl); // 记住 Excel 文件的 底部 必须是 sheet1   否则不能导入
    sTableName := sl[0];
    if Pos('$', sTableName) > 0 then sTableName := '[' + sTableName + ']';
    with sourceds do
    begin
      connection := conn;
      Close;
      SQL.Clear;
      SQL.Text := 'SELECT * FROM ' + sTableName;
      Open;
    end;
    sl.Free;
    if sourceds.isempty then Exit;
    with destds do
    begin
      Close;
      sql.clear;
      Sql.Text := 'SELECT top 1 * FROM sp where 1=0';
      Open;
    end;
   sourceds.First;
    while not sourceds.eof do   
    begin
      destds.Append;
      destds.FieldValues['编号'] := sourceds.FieldValues['编号'];
      destds.FieldValues['名称'] := sourceds.FieldValues['名称'];
      destds.FieldValues['价格'] := sourceds.FieldValues['价格'];
      destds.Post;
      sourceds.Next;
    end;
    Conn.Free;
    dialog.Free;
    showmessage('Import success')
  except
    showmessage('Import fail')
  end;
end;

抱歉!评论已关闭.