我现在要把EXCEL里面的数据提出来放到数据库里
前面没有出现问题,但是EXCEL文件改了以后
连接EXCEL时报错“jmyy11$不是有效名称......“
不知道怎么回事????
linkdata:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+RzButtonEdit1.text+';'; //excel文件存放地址      
   linkdata:=linkdata+'Mode=Share Deny None;Extended Properties=Excel 8.0;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";';
   linkdata:=linkdata+'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;';
   linkdata:=linkdata+'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;';
   linkdata:=linkdata+'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don‘t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';file_name:=extractfilename(RzButtonEdit1.text);
leng:=length(file_name);
file_name1:=copy(file_name,1,leng-4);
dm.adotable1.TableName:=file_name1+'$';
dm.ADOConn.connectionstring:=linkdata;
dm.ADOConn.LoginPrompt:=false;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.SQL.Add('select * from ['+file_name1+'$]');
dm.ADOQuery1.open;  //到这报错

解决方案 »

  1.   

    table的名称不能是文件名而应该是sheet名
      

  2.   

    sheet名怎么得到??
    能不能说详细点??最好有代码
      

  3.   

    用excel打开这个文件,显示在左下角的sheet名.
      

  4.   

    但是怎么用程序获得这个sheet名呢??
    谢谢!
      

  5.   

    用一个table连接到adoconnection控件上,然后选择tablename
      

  6.   

    to  qiujsh(qiujsh) 
    你没看到我的代码吗??
    EXCEL文件是可选的动态的
      

  7.   

    前边的意思是你的在设计期间连接好了,看一下sheet名,你要想在程序中动态取,直接用这种方法就可以,写SQL语句的时间要SHEET名两边加上中括号
    var
      sheetlist:TStrings;  ADOConn.GetTableNames(sheetlist);