首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

ADOquery提取Excel数据有关问题

2012-02-24 
求助:ADOquery提取Excel数据问题Form1中有控件DriveComboBox1、DirectoryListBox1、FileListBox1、ListBox1、D

求助:ADOquery提取Excel数据问题
Form1中有控件DriveComboBox1、DirectoryListBox1、FileListBox1、ListBox1、DBGrid1、DataSource1、ADOConnection1、ADOQuery1,其中FileListBox1用来显示.xls文件,ListBox1通过ADOConnection1.GetTableName()取得FileListBox1中的Excel工作薄的工作表列表,但为什么取得的工作表数量总是比实际工作表数量要多,如本来只有sheet1和sheet2两个,但ListBox1中却会出现sheet1$、sheet1$_和sheet2$三个名称,这是为什么,有什么办法解决呢?
还有一个问题:我想在点击ListBox1中的工作表名时,用ADOQuery1从该工作表中提取数据并在DBGrid1中显示,我是在ListBox1的OnClick事件中写的代码如下:
procedure   TForm1.ListBox1Click(Sender:   TObject);
var   i:   integer;
begin
  adoquery1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= ' ' '+filelistbox1.FileName+ ' ' ';Extended   Properties=Excel   8.0;Persist   Security   Info=False ';//在原代码中未作分行
  i:=listbox1.ItemIndex;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add( 'select   *   from   [ ' ' '+listbox1.Items[i]+ ' ' '] ');
  adoquery1.Open;
end;
但运行时却总是提示Microsoft   Jet数据库引擎找不到对象,这是怎么回事呢?
请各位不吝赐教!!!谢谢了!!!

[解决办法]
第一个问题在我这里是正常的!

第二个问题错误很明显~
sql.Text:= 'select * from [ ' ' '+listbox1.Items[listbox1.ItemIndex]+ ' ' '] ';--错

sql.Text:= 'select * from [ '+ListBox1.Items[listbox1.ItemIndex]+ '] ';---对
原因:
多加引号了

[解决办法]
确实是路过。第一个问题,可能是Excel使用的隐藏Sheet。很简单,忽略它们就是了。写一小段代码,将包含$的表名删掉,不就可以了?

热点排行