我的代码如下:
SELECT * into aaa
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\j-2-(3).xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[j-2-(3)$]
提示找不到j-2-(3)$表,我有很多这样的表,我如果改excel工作表名称就
可以成功执行,哪位高手知道怎么写呢,非常感谢

解决方案 »

  1.   

    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="C:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[aaaa$] 
     
    /*F1             F2               F3   
    ------------- ------------ ------------------------- 
    4.0              5.0              6.0
    7.0              8.0              9.0*/
      

  2.   


    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\account.xls', ' SELECT * FROM  [sheet1$]') -- 从Excel取数据 
    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=c:\account.xls',[Sheet1$])
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\account.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...Sheet1$
    这是查询语句,你参考一下,account 是文件名称
      

  3.   

    )...[j-2-(3)$]
    提示找不到j-2-(3)$表,我有很多这样的表,我如果改excel工作表名称就
    ---------------------------------------------------------------------后面的名称就是要指定工作表名称啊
      

  4.   

    SELECT * into aaa
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\j-2-(3).xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]不是sheet1$么?
      

  5.   

    邹建高手,我的excel文件名j-2-(3).xls 工作表的表名有j-2-(3)这个工作表呀,请大哥把
    你的工作表名改成j-2-(3),你试验下sql语句对不对,应该就会提示我说的问题
      

  6.   

    j-2-(3)就是工作表名称,我是搞地质的,上交的数据是按图幅编号搞得,工作表名都是
    k-11-(21),j-11-(11)之类的,如果是sheet1,aaa之类就可以解决了,还有我发现如果表
    名是111,222之类的,sql语句也会报相同的错误
      

  7.   

    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\j-2-(3).xls', ' SELECT * FROM  [j-2-(3)$]')
     这样可以
      

  8.   

    SELECT * into aaa
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\j-2-(3).xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]LZ你要明白,"D:\j-2-(3).xls"为EXECEL保存的文档名,而最后的)[sheet1$]为打开EXECL后里的
    第一个工作埔名
      

  9.   

    这个可没办法了sqlserver认为这个表名用了非法字符
    你还是换名字吧
      

  10.   

    寒泉在吗,你这个怎么在sqlserver2005上可以,sql2000上不可以呢
      

  11.   

    高升你说对了,SQLSERVER认为这个表名非法
      

  12.   

    SELECT * into aaa
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\j-2-(3).xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[j-2-(3)$]
    中的[j-2-(3)$]格式错误。以前我也碰到像楼主的一样问题,后面我想到使用链接服务器链接上这样格式的EXCEL,找到了一个解决这样问题的方法:SELECT * into aaa
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="D:\j-2-(3).xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...['j-2-(3)$']这样就可以解决了特殊的Excel工作表名。
    这样的方法非常实用。
      

  13.   

    抱歉,我也不太清楚,我用的就是sql2000 ,测试可以
      

  14.   

    以上方法在 SQLSERVER2005可以通过 (我实验了)
      

  15.   

    j-2-(3)应该是工作表的名称,而不是EXCEL文件名
      

  16.   

    excel工作表不能用阿拉伯数字,我也遇到同样的问题。按照14楼“dvd_01”的方法解决了。
      

  17.   

    --> 不符合常规命名规则的Sheet名,用单引号界定:
    select * from opendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test.xls')...['3$']
    select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test.xls',['3$'])--> 或用openrowset(query)
    select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test.xls','select * from [3$]')
      

  18.   

    谢谢以上高人,我也有大量带括号的不符合常规命名规则的Sheet名工作表。。我爱CSDN,我爱CSDN,我爱CSDN,我爱CSDN,我爱CSDN,