我想把文件路径设为动态的,可是会报错:'+' 附近有语法错误。代码如下:
declare @fn varchar(20),@s varchar(1000) 
set @fn = 'D:\Test.xls'
Select * from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=['+@Fn+'] ',sheet1$)望高手指点!

解决方案 »

  1.   

    declare @sql varchar(8000)declare @fn varchar(20)
    set @fn = 'D:\aa.xls'set @sql='Select * from OPENROWSET(''MicroSoft.Jet.OleDB.4.0'',''Excel 5.0;HDR=yes;Database='+@fn+''',sheet1$)'
    exec(@sql)
     
     
      

  2.   

    打開Excel的一個表例子:(1). select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=e:\test.xls',sheet1$)(2). select * into 表 from OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;DATABASE=e:\test1.xls',sheet3$)这样改:
    declare @fn varchar(20),@s varchar(1000) 
    set @fn = 'D:\Test.xls' 
    Select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE='+@Fn+'',sheet1$) 
      

  3.   

    jinjazz :你的方法是对的,但是有一个问题,如果文件名是长度超过14个字符,运行时会提示:
    OLE DB 提供程序 'MicroSoft.Jet.OleDB.4.0' 不包含表 'sheet1'。该表可能不存在,或当前用户没有使用该表的权限。有办法解决这个问题吗?急!
      

  4.   


    declare @sql varchar(8000)declare @fn varchar(8000)
    set @fn = 'D:\aa.xls'set @sql='Select * from OPENROWSET(''MicroSoft.Jet.OleDB.4.0'',''Excel 5.0;HDR=yes;Database='+@fn+''',sheet1$)'
    exec(@sql)
      

  5.   


    declare @fn varchar(20)--> declare @fn varchar(2000)把这个改大一点试试