select * into #a from 
OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\bxstudent.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]--以这个为例
1)要加上列名
2)是用Null来表示
3)就用我的例子

解决方案 »

  1.   

    下面是从excel导入SQL的几种办法:
    select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 8.0;HDR=NO;DATABASE=c:\test.xls'--c:\test.xls是excel文件名
    ,sheet1$) --sheet1$是工作表名+$连接excel
      select * from  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="e:\excel\excel1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]用bcp
    导出到excel
    EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out e:excel\excel1.xls -c -q -S"服务器名" -U"sa" -P"yjdn"'
      

  2.   

    1.不用,但是导入的时候要选取第一行也要导入,否则默认第一行是列名
    2.null
    3,dts,或者用SELECT a.* into 临时表
        FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
       'c:\MSOffice\Access\Samples\northwind.xls';'admin';'mypwd', Orders)
      然后处理数据
      

  3.   

    to:  mgsray(我是新新新新,新来的吧)1.不用,但是导入的时候要选取第一行也要导入,否则默认第一行是列名
    怎么选取第一行?
      

  4.   

    TO:  yjdn(无尽天空) User ID=Admin;Password=;
    这个是SQL的用户和密码吗?
      

  5.   

    select top 1 * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 8.0;HDR=NO;DATABASE=c:\test.xls'--c:\test.xls是excel文件名
    ,sheet1$) --得到的就是第一行
      

  6.   

    服务器: 消息 7399,级别 16,状态 1,行 2
    OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。验证失败。
    [OLE/DB provider returned message: 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。]
      

  7.   

    那个用户名和密码是excel中的,你没设的话,就不用改了,只改路径就可以了
      

  8.   

    select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 8.0;HDR=NO;DATABASE=c:\test.xls'--c:\test.xls是excel文件名
    ,sheet1$)  a
    where 字段名<>''--试试这个
      

  9.   

    select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 8.0;HDR=NO;DATABASE=c:\test.xls'--c:\test.xls是excel文件名
    ,sheet1$)  a
    where 字段名<>''--试试这个
    服务器: 消息 207,级别 16,状态 3,行 2
    列名 '字段名' 无效。
      

  10.   

    where 字段名<>''
    这个的作用是怎么,怎么更改?
      

  11.   

    就相当于一个查询语句加多一个条件where a.字段名<>''--这个是说,这个字段不为空选出来,看你两个角了,这个应该懂吧?
    字段名是说你表中某个字段的名字啊
      

  12.   

    select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 8.0;HDR=NO;DATABASE=c:\xj.xls'--c:\test.xls是excel文件名
    ,sheet1$)  a 
    where a.id<>''
    服务器: 消息 207,级别 16,状态 3,行 2
    列名 'id' 无效。
    这个怎么不好用?还是...?
      

  13.   

    OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\bxstudent.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    --这个东西其实就相当于一个表,你就像对表一样操作就行了如果你的表中字段和excel中一样的话,顺序也一样的话
    insert into SQL表 select 字段1,字段2.....(为防止导出顺序出错,最好写上) from 表(也就是上面那段)
      

  14.   

    select * from 
    OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 8.0;HDR=NO;DATABASE=c:\xj.xls'--c:\test.xls是excel文件名
    ,sheet1$)  a 
    where a.id<>''
    服务器: 消息 207,级别 16,状态 3,行 2
    列名 'id' 无效。
    这个怎么不好用?还是...?
    ------------------------
    我用起来没问题,是不是你没id这个列
      

  15.   

    还有我导入到SQL中的数据有个字段名为 : id,在EXCEL中输入的是1,2,3...现在导入到SQL中都是显示为1.0  2.0   3.0   等,怎么把后面的去掉
      

  16.   

    把你SQL中的字段类型设为整型就可以了
    好了,今晚休息了,没空帮你了,晚安