adoquery连接excell如何知道一个excell文件里有几个sheet?每个sheet名字是什么? ( 积分: 100 )

  • 主题发起人 主题发起人 lcl_003
  • 开始时间 开始时间
L

lcl_003

Unregistered / Unconfirmed
GUEST, unregistred user!
用adoquery连接excell我要把所有数据导出来,sql语句这样写
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from [sheet1$]');
adoquery1.Open;
但是问题是我不知道excell里有几个sheet,每个sheet名字也不知道,这样查询语句就没法写了:(怎么知道excell文件里有几个sheet?每个sheet名字是什么?
 
用adoquery连接excell我要把所有数据导出来,sql语句这样写
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from [sheet1$]');
adoquery1.Open;
但是问题是我不知道excell里有几个sheet,每个sheet名字也不知道,这样查询语句就没法写了:(怎么知道excell文件里有几个sheet?每个sheet名字是什么?
 
如果超过了大小限制你就分开来传,分开来接收好了。
 
取excel的sheet名

var
xlsFileName : string;
excelApp : Variant;
i : integer;
begin
xlsFileName := 'c:/1.xls';
excelApp := CreateOleObject('excel.application');
try
excelApp.workbooks.open(xlsFileName);
except
Messagebox(0,'Microsoft Excel 可能没有安装!','提示!',mb_Ok);
excelApp.quit;
end;

for I := 1 to excelApp.worksheets.count do //worksheets.count sheet个数
ComboBox1.Items.Add(excelApp.worksheets.name);
//excelApp.worksheets.name sheet名
end;
 
hkingmei,哦用excellapp到也是个办法,多谢了。不知道用adoquery能查出来吗
 
ADO连接有个GetTableNames方法
 
ysai, 我试了GetTableNames在excel里不好用:(
 
SL : TStrings;
...
SL := TStringList.Create;
ADOConnection1.GetTableNames(SL, False);
...
SL.Free;
 
我认为楼上法子好
 
呵呵可是我试过xianguo,的方法。不过不是用connection
ADOquery1.Connection.GetTableNames(SL, False);
可是不幸的是:不行:(
 
不行就是你的问题~我试了,绝对可以
代码如下
// ads: TADOConnection;
// memTabs: TMemo;

procedure TForm1.Button1Click(Sender: TObject);
var
ls : TStrings;
begin
ads.Open;
ls := TStringList.Create;
try
ads.GetTableNames(ls);
memtabs.Text := ls.Text;
finally
ls.Free;
end;
end;

直接用ADOConnection,连接串为
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:/My Documents/Book1.xls;Extended Properties=Excel 8.0;Persist Security Info=False
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部