关于把EXCEL指定行列数据读取到DBGRID中

zshsuming 2008-11-04 12:15:39
下面是一段读取EXCEL到TADOQUERY的代码:
with ADOQuery1 do
begin
Append;
Fields[0].AsString:=trim(Excel.WorkSheets[2].Cells[iRow,iCol].value);
Fields[1].AsString:=trim(Excel.WorkSheets[2].Cells[iRow,iCol+1].value);
Fields[2].Asstring:=trim(Excel.WorkSheets[2].Cells[iRow,iCol+2].value);
Fields[3].Asstring:=trim(Excel.WorkSheets[2].Cells[iRow,iCol+3].value);
Fields[4].AsString:=trim(Excel.WorkSheets[2].Cells[iRow,iCol+4].value);
iRow:=iRow+1;
end;
我的问题就在于在FORM上面是否应该有TADOCONNECTION,TADOQUERY,TDATASOURCE,DBGRID这四个控件?
可是他们属性分别应该如何设置呢?TADOCONNECTION,TADOQUERY的CONNECTIONSTRING不设置了吗?
如果CONNECTIONSTRING不设置,那相关的一些属性也不能设置了?那么ADOQUERY1是关闭的,又如何读取到EXCEL的数据呢?
...全文
251 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liguiwen95 2008-11-05
  • 打赏
  • 举报
回复
不是的 你要操作哪个数据库就链接哪个.
如果想知道结果,那就多去做测试就对了,很多结果都是自己经过N次错误才能记得更牢
zshsuming 2008-11-05
  • 打赏
  • 举报
回复
楼上的说什么?答非所问,我晕。。
wbyniao 2008-11-04
  • 打赏
  • 举报
回复
读取到数据库.之后你设计下 ADOQuery1.sql.Add()语句 之后设置ADOQuery1.connectionstring:= 数据库路径名. DataSource1.dateset:=ADOQuery1 DBGrid1.datasource := DataSource1
这样就可以显示出来了.


begin
try
ExcelApp := CreateOleObject('Excel.Application');
OpenDialog1.Execute;
WorkBook := ExcelApp.WorkBooks.Open(OpenDialog1.FileName); //使用opendialog对话框指定//excel档路径
ExcelApp.Visible := False;
ExcelRowCount := WorkBook.worksheets[1].UsedRange.Rows.Count;
try
for j := 1 to ExcelRowCount do
begin
s := ExcelApp.worksheets[1].Cells[j, 1].Value;
t := ExcelApp.worksheets[1].Cells[j, 2].Value;
m := ExcelApp.worksheets[1].Cells[j, 3].Value;
r := ExcelApp.worksheets[1].Cells[j, 4].Value;
x := ExcelApp.worksheets[1].Cells[j, 5].Value;
sql := 'insert into translate1(Translate, Price ,Specifications,Picture,url) values' + '(' + quotedstr(s) + ',' + quotedstr(t) + ',' + quotedstr(m) + ',' + quotedstr(r) + ',' + quotedstr(x) + ')';
ADOQuery1.Close;
ADOQuery1.sql.Clear;
ADOQuery1.sql.Add(sql);
ADOQuery1.ExecSQL;
end
except
end;
finally
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
WorkBook := Unassigned;
end;
zshsuming 2008-11-04
  • 打赏
  • 举报
回复
楼上的朋友,请问读取指定行列数据,怎么解决?你说的方法我知道``
hongqi162 2008-11-04
  • 打赏
  • 举报
回复
不用这么复杂,你可以使用ado组件直接连接



var
fileName:string;
begin
fileName:='c:\New Microsoft Excel.xls';
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';Extended Properties=''Excel 8.0;HDR=Yes;IMEX=1'';';
ADOConnection1.Connected:=true;
with self.ADODataSet1 do
begin
close;
commandtext:='select * from [sheet1$]';
open;
end;
end;
zshsuming 2008-11-04
  • 打赏
  • 举报
回复
楼上的朋友,你这个是不是还要连接SQL数据库的啊?能不能不通过SQL数据库?
liguiwen95 2008-11-04
  • 打赏
  • 举报
回复
如果要使用到DBGRID,则TDBGrid控件要有
如果要使用到数据库,则
TADOConnection,TDataSource要有
要用到ADOQuery,则TADOQuery要有

他们之间的设置一般是这样:
TADOConnection的ConnectionString属性选上要连接的数据库,LoginPrompt属性是要不要显示输入帐号密码的对话框。自己决定要不要设置。
TDataSource的DataSet属性选ADOQuery。
TADOQuery的Connection属性选ADOConnection。
TDBGrid的DataSource属性设置为DataSource。
基本上这样连接就可以达到你的要求了

如果要动态链接数据库,则TADOConnection中的属性ConnectionString不用设置
只要TADOConnection的Connected属性设置为True,那ADOQuery就可以操作了。
zshsuming 2008-11-04
  • 打赏
  • 举报
回复
如果觉得分不够请提出``

2,507

社区成员

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

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