用DELPHI 连接Excel

luo000102 2011-04-25 08:22:01
代码如下:
qry1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+dlgOpen1.FileName+';Extended Properties=Excel 8.0;Persist Security Info=False';
qry1.SQL.Clear;
sql := ('select * from OPENROWSET('+quotedstr('MICROSOFT.JET.OLEDB.4.0')+','+quotedstr('Excel 5.0;HDR=YES;Excel 8.0;DATABASE='+dlgOpen1.FileName)+',['+s+'])');
qry1.SQL.Add(sql);
qry1.Open; //这里报错(提示From附近字句语法有错)但是我直接把SQL考到查询分析器中可以查询出excel中的信息
我想要实现将从Excel中查询出数据并保存到数据集中~~~大家帮我看看~有好的思路也可以提供~~谢谢大家了~
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
luo000102 2011-04-27
  • 打赏
  • 举报
回复
问题已经解决了~感谢大家的帮助,将sql 赋值为select * from [Sheet1$]的就可以了。
luo000102 2011-04-27
  • 打赏
  • 举报
回复
楼上的我已经修改了~就是不行才问的~
浩南_哥 2011-04-26
  • 打赏
  • 举报
回复

ADOQuery2.SQL.Append('insert into qqq select * from OPENROWSET(');//将这个‘qqq’字改为你的数据库中的表名
ADOQuery2.SQL.Append(quotedstr('MICROSOFT.JET.OLEDB.4.0'));
ADOQuery2.SQL.Append(','+quotedstr('Excel 5.0;HDR=YES;Excel 8.0;DATABASE='+OpenDialog1.FileName)+',['+s+'])');
ADOQuery2.ExecSQL;
//这几句修改下九行了,'insert into OPENROWSET(‘+quotedstr('MICROSOFT.JET.OLEDB.4.0')+','+quotedstr('Excel 5.0;HDR=YES;Excel 8.0;DATABASE='+OpenDialog1.FileName)+',['+s+'])' +'select * from qqq'+
luo000102 2011-04-26
  • 打赏
  • 举报
回复
楼上的我试过只能从数据库中取信息,不能直从Excel中取~我要的是从Excel中取信息过滤后在写入一个新的excel中
浩南_哥 2011-04-26
  • 打赏
  • 举报
回复
。。。。。。例子都给你了,自己修改下就可以。
luo000102 2011-04-26
  • 打赏
  • 举报
回复
楼上的是从数据库表QQQ中查出信息插入到excel中,我要的是从Excel中查然后插入到另一个EXCEL中,不知楼上的明白我的意思没有,我要的不是将数据库中的数据倒到EXCEL中,而是直接将EXCEL中的数据过滤后倒到新的EXCEL中。
浩南_哥 2011-04-25
  • 打赏
  • 举报
回复
//快速从Excel导入数据:
procedure TForm1.Button1Click(Sender: TObject);//在数据库中自动生成表qqq
var s:string;
  ADOConn:TADOConnection;
  aDataSet:TADODataSet;
begin
  if OpenDialog1.Execute then
  begin
  ADOConn:=TADOConnection.Create(self);
  ADOConn.LoginPrompt:=false;
  ADOConn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
  +OpenDialog1.FileName
  +';Extended Properties=Excel 8.0;Persist Security Info=False';
  aDataSet:=TADODataSet.Create(self);
  aDataSet.Connection:=ADOConn;
  ADOConn.OpenSchema(siTables,EmptyParam,EmptyParam,aDataSet);
  aDataSet.Last;
  s:=aDataSet.Fields.Fields[2].AsString;//获取第一工作表表名
  aDataSet.Close;
  aDataSet.Free;
  ADOConn.Close;
  ADOConn.Free;
  ADOQuery2.Connection:=ADOConnection1;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Append('select * into qqq from OPENROWSET(');//将这个‘qqq’字改为你的数据库中的表名
  ADOQuery2.SQL.Append(quotedstr('MICROSOFT.JET.OLEDB.4.0'));
  ADOQuery2.SQL.Append(','+quotedstr('Excel 5.0;HDR=YES;Excel 8.0;DATABASE='+OpenDialog1.FileName)+',['+s+'])');
  ADOQuery2.ExecSQL;
  showmessage('ok');
  end;
end;
procedure TForm1.Button3Click(Sender: TObject);//在数据库中已经存在表qqq
var s:string;
  ADOConn:TADOConnection;
  aDataSet:TADODataSet;
begin
  if OpenDialog1.Execute then
  begin
  ADOConn:=TADOConnection.Create(self);
  ADOConn.LoginPrompt:=false;
  ADOConn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
  +OpenDialog1.FileName
  +';Extended Properties=Excel 8.0;Persist Security Info=False';
  aDataSet:=TADODataSet.Create(self);
  aDataSet.Connection:=ADOConn;
  ADOConn.OpenSchema(siTables,EmptyParam,EmptyParam,aDataSet);
  aDataSet.Last;
  s:=aDataSet.Fields.Fields[2].AsString;//获取第一工作表表名
  aDataSet.Close;
  aDataSet.Free;
  ADOConn.Close;
  ADOConn.Free;
  ADOQuery2.Connection:=ADOConnection1;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Append('insert into qqq select * from OPENROWSET(');//将这个‘qqq’字改为你的数据库中的表名
  ADOQuery2.SQL.Append(quotedstr('MICROSOFT.JET.OLEDB.4.0'));
  ADOQuery2.SQL.Append(','+quotedstr('Excel 5.0;HDR=YES;Excel 8.0;DATABASE='+OpenDialog1.FileName)+',['+s+'])');
  ADOQuery2.ExecSQL;
  showmessage('ok');
  end;
end;
摘自:http://topic.csdn.net/u/20110409/17/5da85312-084c-4827-837a-acc69b546563.html
equn93 2011-04-25
  • 打赏
  • 举报
回复
用ADO连接的话,SQL语句这样写就行了
“select * from [Sheet1$]”
Sheet1是工作表名,根据实际情况去写。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧