我用ADOConnect.gettablenames()获取了EXCEL工作簿中的工作表名,但是有一些问题。
例:
假设EXCEL工作簿的名字是AA.XLS,其中有两个工作表分别为a1,a2,这两张表是从其他二个工作簿中导入的。当我用GETTABLENAME()方法获取到的名字有a1$_,a1$数据库,a1$,a2$,为什么为多出一些表名?我用ACCESS试着导入该表,在导入向导中,
如果选择“显示工作表”,则显示的工作表名只有二个a1,a2
如果选择“显示命名区域”,则会报错,并且显示出了a1$_,a1$数据库,xxxx$
(其中上面a2的名字在原先那个表中为xxx,在此时则显示为原来的名字了)不知道这是怎么回事?
请问大侠们,有没有方法可以解决该问题?或有没有其他方法获取EXCEL工作簿中的所有工作表名?
谢谢!
例:
假设EXCEL工作簿的名字是AA.XLS,其中有两个工作表分别为a1,a2,这两张表是从其他二个工作簿中导入的。当我用GETTABLENAME()方法获取到的名字有a1$_,a1$数据库,a1$,a2$,为什么为多出一些表名?我用ACCESS试着导入该表,在导入向导中,
如果选择“显示工作表”,则显示的工作表名只有二个a1,a2
如果选择“显示命名区域”,则会报错,并且显示出了a1$_,a1$数据库,xxxx$
(其中上面a2的名字在原先那个表中为xxx,在此时则显示为原来的名字了)不知道这是怎么回事?
请问大侠们,有没有方法可以解决该问题?或有没有其他方法获取EXCEL工作簿中的所有工作表名?
谢谢!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses comobj;{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
Excel_Handle: OleVariant;
begin
try
Excel_Handle := GetActiveOleObject('Excel.Application');
except
try
Excel_Handle := CreateOleObject('Excel.Application');
except
Exit;
end; end;
//showmessage(inttostr(Excel_Handle.Sheets.Count));
for i := 1 to Excel_Handle.Sheets.Count do
showmessage(Excel_Handle.Sheets[i].Name);
end;end.
当计算机上不装有EXCEL软件时,就不能使用这个对象了。