delphi中使用EXCEL问题,高分求答

shunshunjoe 2011-08-26 12:59:40
连接用ADO中的什么控件?我需要打开OpenDialog1找到excel文件能直接在程序中打开的,最好源码给我看看
...全文
165 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
shunshunjoe 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 m617105 的回复:]
引用 18 楼 case5166 的回复:

我试过了楼上的方法 ,但是获取TABLENAME确实有问题:
我在XLS表是写了五个SHEET名称分别为a,b,c,d,e
但获取的tablename确是

a$
a$Print_Titles
a$Z_A8C763CC_70F3_4DFF_B3DD_43D375CE2C0A_#wvu#PrintTitles
b$
b$Print_T……
[/Quote]我感觉SHEET都乱了,我的SHEET比较多,查看SHEET代码里面的NAME输入也不行,是不是SHEET12就输入12
浩南_哥 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 case5166 的回复:]

我试过了楼上的方法 ,但是获取TABLENAME确实有问题:
我在XLS表是写了五个SHEET名称分别为a,b,c,d,e
但获取的tablename确是

a$
a$Print_Titles
a$Z_A8C763CC_70F3_4DFF_B3DD_43D375CE2C0A_#wvu#PrintTitles
b$
b$Print_Titles
b$Z_A8C763CC_70F3……
[/Quote]
我用的是Delphi 7+Excel 2003(非绿色版)+Win XP
没出现你说的问题,很正常a$,b$,c$,d$
我看见佛 2011-08-26
  • 打赏
  • 举报
回复
順便跟著學習下哈,,,
我看见佛 2011-08-26
  • 打赏
  • 举报
回复
我试过了楼上的方法 ,但是获取TABLENAME确实有问题:
我在XLS表是写了五个SHEET名称分别为a,b,c,d,e
但获取的tablename确是

a$
a$Print_Titles
a$Z_A8C763CC_70F3_4DFF_B3DD_43D375CE2C0A_#wvu#PrintTitles
b$
b$Print_Titles
b$Z_A8C763CC_70F3_4DFF_B3DD_43D375CE2C0A_#wvu#PrintTitles
c$
c$Print_Titles
c$Z_A8C763CC_70F3_4DFF_B3DD_43D375CE2C0A_#wvu#PrintTitles
d$
d$Print_Titles
d$Z_A8C763CC_70F3_4DFF_B3DD_43D375CE2C0A_#wvu#PrintTitles
e$
e$Print_Titles
e$Z_A8C763CC_70F3_4DFF_B3DD_43D375CE2C0A_#wvu#PrintTitles
这样子的,
所以当TableList[0]时是对的,TableList[1]是错的
是否每个值加3?
浩南_哥 2011-08-26
  • 打赏
  • 举报
回复
TableList[0]它本身自己就带$,你可以调试的时候输出一下SQL语句就清楚了
TableList里面的数据本身就是Excel各个Sheet的名称+$
shunshunjoe 2011-08-26
  • 打赏
  • 举报
回复
数据引擎找不到对象怎么回事?'select top 15 * from [' + TableList[0] + ']'里面的TableList[0]我也改了。是不是要加$,怎么加
浩南_哥 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 shunshunjoe 的回复:]

引用 7 楼 m617105 的回复:
。。。。。。。。。你发的你都没看啊
TableList := TStringList.Create;
conExcel.GetTableNames(TableList);//用于获取Excel表中的Sheet名称(Table Name)
代码没错误了,就是运行的时候出现灾难性错误
[/Quote]
????
我两三个程序再用没问题的,Delphi 7+Win XP。
shunshunjoe 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 m617105 的回复:]
。。。。。。。。。你发的你都没看啊
TableList := TStringList.Create;
conExcel.GetTableNames(TableList);//用于获取Excel表中的Sheet名称(Table Name)
[/Quote]代码没错误了,就是运行的时候出现灾难性错误
shunshunjoe 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 shunshunjoe 的回复:]
引用 11 楼 m617105 的回复:
引用 8 楼 shunshunjoe 的回复:

引用 7 楼 m617105 的回复:
。。。。。。。。。你发的你都没看啊
TableList := TStringList.Create;
conExcel.GetTableNames(TableList);//用于获取Excel表中的Sheet名称(Table Name)
是不是要引用和定……
[/Quote]不好意思没看清你把控件名字改了
shunshunjoe 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 m617105 的回复:]
引用 8 楼 shunshunjoe 的回复:

引用 7 楼 m617105 的回复:
。。。。。。。。。你发的你都没看啊
TableList := TStringList.Create;
conExcel.GetTableNames(TableList);//用于获取Excel表中的Sheet名称(Table Name)
是不是要引用和定义,定义什么类型我也不知道。。。

Ta……
[/Quote]他说没定义dlgOpenExcel
浩南_哥 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shunshunjoe 的回复:]

引用 7 楼 m617105 的回复:
。。。。。。。。。你发的你都没看啊
TableList := TStringList.Create;
conExcel.GetTableNames(TableList);//用于获取Excel表中的Sheet名称(Table Name)
是不是要引用和定义,定义什么类型我也不知道。。。
[/Quote]
TableList:TStringList;
zcg12122 2011-08-26
  • 打赏
  • 举报
回复
需要uses comobj
zcg12122 2011-08-26
  • 打赏
  • 举报
回复
我也来回一条
procedure TForm2.btn2Click(Sender: TObject);

var

excelx,excely : string;

ExcelApp,WorkBook: Olevariant;

ExcelRowCount,i :Integer;

begin

try

ExcelApp := CreateOleObject('Excel.Application');

// WorkBook :=ExcelApp;

WorkBook := ExcelApp.WorkBooks.Open('d:\123.xls');

//使用opendialog对话框指定excel档路径

ExcelApp.Visible := false;

ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;

for i := 2 to excelrowcount + 1 do

begin

excelx := excelapp.Cells[i,1].value;

excely := excelapp.Cells[i,2].value;

if (excelx = '') and (excely = '') then //对应数据库中不能为空的数据

break //指定excel档的第 i 行 ,第 1,2(看情况而定)行, 如果为空就退出,这样的设定,最好是你的档案力这两行

else

with qry1 do

begin

close;

sql.clear;

sql.add('insert into aa(a,b) values(:a,:b)');

Parameters.ParamByName('a').value:= excelx; //excel档的第一列插入到aa表的 a 栏位;

Parameters.ParamByName('b').value:= excely; //excel档的第二列插入到aa表的 b 栏位, 如果是数字, 用strtofloat 或者 strtoint

execsql;

end;

end;

finally

WorkBook.Close;

ExcelApp.Quit;

ExcelApp := Unassigned;

WorkBook := Unassigned;

end;

end;
shunshunjoe 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 m617105 的回复:]
。。。。。。。。。你发的你都没看啊
TableList := TStringList.Create;
conExcel.GetTableNames(TableList);//用于获取Excel表中的Sheet名称(Table Name)
[/Quote]是不是要引用和定义,定义什么类型我也不知道。。。
浩南_哥 2011-08-26
  • 打赏
  • 举报
回复
。。。。。。。。。你发的你都没看啊
TableList := TStringList.Create;
conExcel.GetTableNames(TableList);//用于获取Excel表中的Sheet名称(Table Name)
shunshunjoe 2011-08-26
  • 打赏
  • 举报
回复
EXCEL中查询tabelname怎么查询语句
山东蓝鸟贵薪 2011-08-26
  • 打赏
  • 举报
回复
努力学习中...........
浩南_哥 2011-08-26
  • 打赏
  • 举报
回复

dlgOpenExcel.Options := [ofFileMustExist];
dlgOpenExcel.Filter := 'Excel文件 (*.xls)|*.xls';
dlgOpenExcel.FilterIndex := 1;
dlgOpenExcel.FileName := '';
if dlgOpenExcel.Execute then
begin
conExcel.Close;
conExcel.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
dlgOpenExcel.FileName+ ';Extended Properties=Excel 8.0;Persist Security info=False';
conExcel.open;
TableList := TStringList.Create;//用于获取Excel表中的Sheet名称
conExcel.GetTableNames(TableList);
qryExcel.Close;
qryExcel.SQL.Clear;
qryExcel.SQL.Add('select top 15 * from [' + TableList[0] + ']');
qryExcel.Open;
end;
shunshunjoe 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 m617105 的回复:]
用AdoConnect连接Excel,AdoQuery查询数据

Delphi(Pascal) code

begin
//FileName:文件路径
conExcel.Close;
conExcel.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
FileName + ……
[/Quote]用button和OpenDialog1,button中具体的代码能不能给下
我看见佛 2011-08-26
  • 打赏
  • 举报
回复
頂,,,又學到了東東,,,
加载更多回复(1)

2,498

社区成员

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

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