我用的ADOConnection1,ADOTable1,DataSource1,DBGrid1。
DBGrid1指向DataSource1,DataSource1指向ADOTable1,ADOTable1指向ADOConnection1。ADOConnection1连接Excel文件的连接语句如下:
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' + sFileName + ';Extended Properties=Excel 8.0;Persist Security Info=True';
然后我写如下语句:
ADOConnection1.Connected := True;
ADOTable1.Active:= False;
ADOTable1.TableName:= ‘Sheet1$’ //Sheet1是工作簿的名字
ADOTable1.Active:= True;问题出来了,一般来说Excel文件中第一个工作簿的名字为Sheet1,但是有些文件工作簿的名字是改了的,比如改为“学生成绩统计”,那么我该怎么写,让它自动读取ADOConnection1连接Excel文件成功后取得的工作薄名字:
ADOTable1.TableName:= ???????
DBGrid1指向DataSource1,DataSource1指向ADOTable1,ADOTable1指向ADOConnection1。ADOConnection1连接Excel文件的连接语句如下:
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' + sFileName + ';Extended Properties=Excel 8.0;Persist Security Info=True';
然后我写如下语句:
ADOConnection1.Connected := True;
ADOTable1.Active:= False;
ADOTable1.TableName:= ‘Sheet1$’ //Sheet1是工作簿的名字
ADOTable1.Active:= True;问题出来了,一般来说Excel文件中第一个工作簿的名字为Sheet1,但是有些文件工作簿的名字是改了的,比如改为“学生成绩统计”,那么我该怎么写,让它自动读取ADOConnection1连接Excel文件成功后取得的工作薄名字:
ADOTable1.TableName:= ???????
解决方案 »
- listbox1中取出指定值的问题
- 关于dll资源释放的问题
- 推荐一下,用什么桌面数据库更好?
- ODBC建立數據源問題
- [microsoft][odbc sql server driver]没有执行可选特性
- 郁闷:ado连Access数据库的问题
- 模糊查询的问题还是没解决,希望大家帮帮忙了。
- delphi编程!
- 系统老是说我的DATABASE别名没有申明,为什么?
- 一个自定义类属性的读写问题
- Unsatisfied forward or external declaration: 'TEnter_Form.Exit_BtnClick'求高手
- 求个思路:如何像360桌面一样把图标拖出窗体?个人感觉能拖出窗体的应该是个无边框FORM.但是从父窗体拖出时一直处理不好求指点.
procedure TfrmAccessExcel.btnLoadClick(Sender: TObject);
var
MSExcel : Variant;
i :integer;
begin
if OpenDialog1.Execute then
AFileName := OpenDialog1.FileName
else
begin
Showmessage('未打開文件!');
exit;
end;
//下段程序是打開一個EXCEL文件,並取得文件中的表名。
try
MSExcel := CreateOleObject('Excel.Application'); //建立OLE對象;
MSExcel.Workbooks.Open(AFileName); //打開EXCEL文件;
ComboBox1.Items.Clear; //清除下拉列表框中項;
for i := 1 to MSExcel.WorkSheets.Count do
ComboBox1.Items.Add(MSExcel.WorkSheets[i].Name); //取得EXCEL文件中的表名,並加到下拉列表框中;
ComboBox1.Text := ComboBox1.Items.Strings[0]; //下拉列表框中顯示第一個表名;
finally
MSExcel.Workbooks.Close;
MSExcel.Quit;
MSExcel := Unassigned;
end;
end;
strList: TStrings;
intI: Integer;
begin
self.ADOConnection1.Connected:= false;
self.ADOConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' + sFileName + ';Extended Properties=Excel 8.0;Persist Security Info=True';;
self.ADOConnection1.Connected:= true;
strList:= TStringList.Create;
self.ADOConnection1.GetTableNames(strList);//表名就在这个list里面
for intI:=0 to strList.count-1 do
showmessage(strList.Strings[intI]);
//.............
strList.free;end;
还有GetTableNames(ts,false)中的false有什么用?
strList: TStrings;
intI: Integer;
begin
self.ADOConnection1.Connected:= false;
self.ADOConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=' + sFileName + ';Extended Properties=Excel 8.0;Persist Security Info=True';;
self.ADOConnection1.Connected:= true;
strList:= TStringList.Create;
self.ADOConnection1.GetTableNames(strList);//表名就在这个list里面
for intI:=0 to strList.count-1 do
showmessage(strList.Strings[intI]);
//.............
strList.free;end;