我用ADOConnect.gettablenames()获取了EXCEL工作簿中的工作表名,但是有一些问题。
例:
假设EXCEL工作簿的名字是AA.XLS,其中有两个工作表分别为a1,a2,这两张表是从其他二个工作簿中导入的。当我用GETTABLENAME()方法获取到的名字有a1$_,a1$数据库,a1$,a2$,为什么为多出一些表名?我用ACCESS试着导入该表,在导入向导中,
如果选择“显示工作表”,则显示的工作表名只有二个a1,a2
如果选择“显示命名区域”,则会报错,并且显示出了a1$_,a1$数据库,xxxx$
(其中上面a2的名字在原先那个表中为xxx,在此时则显示为原来的名字了)不知道这是怎么回事?
请问大侠们,有没有方法可以解决该问题?或有没有其他方法获取EXCEL工作簿中的所有工作表名?
谢谢!

解决方案 »

  1.   

    unit Unit1;interfaceuses
      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.
      

  2.   

    如果不用Excel.application这个对象,是否还有其他的方法来建?
    当计算机上不装有EXCEL软件时,就不能使用这个对象了。
      

  3.   

    JAVA EXCEL API 应用示例:http://blog.csdn.net/qddabao/archive/2004/08/11/71829.aspx