Delphi将Excel导入Access


导入前是空表

导入后的状态

我连接数据库是使用了dbLink.udl文件来连接的,并且是动态创建的,这样做的好处就是无论代码转移到那个磁盘并且数据库文件改了名字,我们也只需要手动配置一下.udl文件,程序依然可以正常运行,免去了修改代码的麻烦。

例子很简单,直接给代码吧:

procedure TForm1.FormCreate(Sender: TObject);
begin
  AQry.ConnectionString := 'FILE NAME=' + ExtractFilePath(paramStr(0)) + 'dbLink.udl';
  AQry.Active := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ExConn: TADOConnection;
  AFile: string;
  sList: TStringList;
  aTable: string;
  ExQry: TADOQuery;
  i: integer;
begin
  if OpenDialog1.Execute then
    AFile := OpenDialog1.FileName;
  ExConn := TADOConnection.Create(Application);
  ExConn.Connected := False;
  ExConn.LoginPrompt := False;
  ExConn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +AFile + ';Extended Properties=Excel 8.0;Persist Security Info=False';
  ExConn.Connected := True;
  sList := TStringList.Create;              
  ExConn.GetTableNames(sList);
  aTable := sList[0];
  if Pos('$', aTable)>0 then
    aTable := '[' + aTable + ']';
  ExQry := TADOQuery.Create(nil);
  ExQry.Connection := ExConn;
  ExQry.Close;
  ExQry.SQL.Clear;
  ExQry.SQL.Text := 'select * from' + aTable;
  ExQry.Open;
  sList.Free;
  if ExQry.RecordCount>0 then
  begin
    ExQry.First;
    for i := 1 to ExQry.RecordCount  do
    begin
      AQry.Open;
      AQry.Append;
      AQry.FieldValues['编号'] := ExQry.FieldValues['编号'];
      AQry.FieldValues['角色'] := ExQry.FieldValues['角色'];
      AQry.FieldValues['演员'] := ExQry.FieldValues['演员'];
      AQry.FieldValues['电视剧'] := ExQry.FieldValues['电视剧'];
      AQry.Post;
      ExQry.Next;
    end;
  end;
  ExConn.Free;
  ExQry.Free;
end;


上一篇: Delphi之TDrawGrid绘制
下一篇: delphi 可变记录
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: Delphi Excel 导入 Access
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭