excel使用$返回sheetname

时间:2015-11-24 08:25:12

标签: excel delphi

我使用ADO和下面的函数

读取excel文件
procedure TForm1.ConnectToExcel;
var strConn :  widestring;
begin
  strConn:='Provider=Microsoft.Jet.OLEDB.4.0;' +
           'Data Source=' + Edit1.Text + ';' +
           'Extended Properties=Excel 8.0;';

  AdoConnection1.Connected:=False;
  AdoConnection1.ConnectionString:=strConn;
  try
    AdoConnection1.Open;
    AdoConnection1.GetTableNames(ComboBox1.Items,True);
  except
    ShowMessage('Unable to connect to Excel, make sure the workbook ' + Edit1.Text + ' exist!');
    raise;
  end;
end;(*ConnectToExcel*)

procedure TForm1.FetchData;
begin
  StatusBar1.SimpleText:='';

  if not AdoConnection1.Connected then ConnectToExcel;

  AdoQuery1.Close;
  AdoQuery1.SQL.Text:='select * from' + SheetName;
  try
    AdoQuery1.Open;
  except
    ShowMessage('Unable to read data from Excel, make sure the query ' + SheetName + ' is meaningful!');
    raise;
  end;
end;

对于几个excel文件,这段代码工作得很好,但现在我尝试打开一个带有奇怪错误的新代码。

在excel文件中,工作表名称是MYLIST,如果我检索工作表名称列表,我得到名称MYLIST $ back。即使使用MYLIST或MYLIST $,我也无法打开此工作表。可能是什么问题。

1 个答案:

答案 0 :(得分:3)

Microsoft Jet Engine不允许" $"标识符中的符号,仅在内置函数中。如果您在姓名中使用此符号,则应引用这些标识符 所以试试这个:

select * from [MYLIST$]