小弟想要将Excel中的数据导入到数据库的表中,于是使用了邹老大的SQL语句:insert into 表 select * from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)执行的时候,出现错误提示:“oledb provider does not contain the table: provider name = "MICROSOFT.JET.OLEDB.4.0", table name = "sheet1$"”。请大侠指点,学习,关注……注:1)C:\test.xls文件存在且有数据
    2)执行SQL语句的时候,C:\test.xls是关闭的。
    3)小弟电脑上安装的是EXCEL2000,操作系统为XP

解决方案 »

  1.   

    C:\test.xls文件有没有sheet1工作表?
      

  2.   

    sheet1工作表当然是有的!!!
      

  3.   

    小弟自己有测试了一下,发现以下问题:1)如果,Excel表和数据库在同一台电脑上,那么SQL语句就OK2)如果,数据库在服务器上,但是EXCEL表在另外的电脑上,就会出现我所说的错误。请大侠指点……注:服务器上安装的也是Office 2000, 操作系统是WIN2000 Server
      

  4.   

    OPENROWSET只能访问服务器本机
      

  5.   

    楼主的说明:
    小弟也找到原因了,就如Haiwer(海阔天空)所说,原因是C:\test.xls路径的问题。如果数据库和Excel文档不在同一电脑上,有什么好一点的办法解决呢??请指点,关注……
      

  6.   

    楼主的说明:如果数据库和Excel文档不在同一电脑上,有什么好一点的办法解决呢??请指点一下……
      

  7.   

    sql在sql服务器上执行的, 如果文件不在sql服务器上, 则必须在sql服务器
    能访问的共享目录中.
      

  8.   

    如果你熟悉DTS包, 可以考虑创建DTS包, 将包保存为二进制文件, 然后在excel文件所在的电脑上用dtsrun.exe来执行包. 这样就用考虑共享.