永发信息网

delphi Excel与数据库连接

答案:2  悬赏:70  手机版
解决时间 2021-02-26 02:52
  • 提问者网友:富士山上尢
  • 2021-02-25 13:45
数据库中有一表,有两字段,一个是name 另一个是id,我想实现这样一个功能,就是在Excel中输入表中的一个id,输完后id就会变成name,不知道我这样说各位是否明白,因为报表中输入名字太慢了,想偷懒,想用DELPHI实现,请教各位大侠
回答帮我解决问题了,献上200分!谢谢!
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-02-25 13:57
用adoquery呀
给你一个例子。
//用ADO控制excel



procedure TForm1.BitBtn1Click(Sender: TObject);
Var
sFileName, sTableName : String;
sl : TStringList;
begin
If Not OpenDialog1.Execute Then Exit;
sFileName := OpenDialog1.FileName;
ADOConnection1.Connected := False;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' + sFileName + ';Extended

Properties=Excel 8.0;Persist Security Info=True';
ADOConnection1.Connected := True;
//
sl := TStringList.Create;
ADOConnection1.GetTableNames(sl); //sl是表名列表(Excel中可能有很多个sheet)
//Excel表中可能有很多个sheet,可以循环,本程序只处理了第一个sheet(sl[0])
//for i := 0 to sl.Count-1 Do
//begin
// sTableName := sl[i];
//end;
sTableName := sl[0];
If Pos('$', sTableName)>0 Then sTableName := '[' + sTableName + ']';
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text := 'SELECt * FROM ' + sTableName + ‘where id =’+ 你自己输入的值比如说edit1.text;
ADOQuery1.Open;
sl.Free;
end;
最后再while not adoquery1.eof do进行读取
全部回答
  • 1楼网友:渡鹤影
  • 2021-02-25 14:08
begin //在此加上代码; msexcel:=createoleobject( 'excel.application '); msexcel.workbooks.add; msexcel.visible:=false; with dataset do begin //转出表头 for i:=0 to fieldcount-1 do begin msexcel.cells[1,i+1].value:=fields[i].fieldname; end; //转出内容 j:=2;//表头为1,内容为第二行 while not eof do begin for i:=0 to fieldcount-1 do begin msexcel.cells[j,i+1].numberformat:= '@ '; msexcel.cells[j,i+1].value:=fields[i].asstring; end; inc(j); next; end; end;//end of dataset; msexcel.activeworkbook.saveas(filename); msexcel.activeworkbook.saved:=true; msexcel.quit; 加上一个, uses comobj; var msexcel:variant; 这种方式速度有点慢,推荐你用dxdbgrid这个控件,它有一个方法,可以实现,速度快
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯