最好是给出用查询分析器的SQL代码。我写的是
insert into mytest(序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注)
select * from 
openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;database=F:\Documents and Settings\Administrator\桌面\2006.xls;HDR=Yes;IMEX=1', sheet1$)
运行后提示:插入错误: 列名或所提供值的数目与表定义不匹配。
我核对过,类型了,可找不出结果来。

解决方案 »

  1.   

    insert tablename(c1, c2,c3)--定义列
    select a,b,c
    from openrowset('Microsoft.Jet.OLEDB.4.0','EXCEL 8.0;HDR=YES;User id=admin;Password=;IMEX=1;
    DATABASE=C:\temp.xls', temp$)
      

  2.   

    try:
    insert into mytest(序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注)
    select 序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注 from 
    openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;database=F:\Documents and Settings\Administrator\桌面\2006.xls;HDR=Yes;IMEX=1', sheet1$)
    --注意在2006.xls的工作表sheet1$中的第一行必须是这样:序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注
    --序号为单元格A1,姓名为单元格B1,...依此类推
      

  3.   

    gc_ding(施主,给个妞泡好么)我的也是这样子的了,检查过了,都有一一对应的了,可提示:OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。
      

  4.   

    1.两种显示方式的区别:
    Select * From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;database=F:\Documents and Settings\Administrator\桌面\2006.xls;HDR=Yes;IMEX=1','select * from [sheet1$]')
    Select * From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;database=F:\Documents and Settings\Administrator\桌面\2006.xls;HDR=Yes;IMEX=1',sheet1$')两种语句的显示结果可能不同,主要表现在列的显示次序上可能有所不同,使用第一种列的排列与EXCEL文件一致,第二种的列显示不同
      

  5.   

    gc_ding(施主,给个妞泡好么) 按你的做法它提示:所有列名无效,这与我之前的结果一样
      

  6.   

    提供程序未给出有关错误的任何信息
    可能原因:EXCEL文件被打开,要先关闭
      

  7.   

    gc_ding(施主,给个妞泡好么) insert into mytest(序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注)Select * From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;database=C:\2006.xls;HDR=Yes;IMEX=1','select * from [sheet1$]')错误提示:插入错误: 列名或所提供值的数目与表定义不匹配。单是查询是可以的了,可要向表里插入时类型不能匹配,是不是Excel里的类型影响啊???
      

  8.   

    所有列名无效
    -------------
    --注意在2006.xls的工作表sheet1$中的第一行必须是这样:序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注
      

  9.   

    是啊
    2006.xls的工作表sheet1$中的第一行必须是这样:序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注
    我把Excel里面的类型都设置为文本类型,mytest中的12个字段全设置为char 10,测试后还是
     提示错误:列名或所提供值的数目与表定义不匹配。
      

  10.   

    roy_88(中国风_燃烧你的激情!!!) 
    ---------------------------------------
    我也用了企业管理器导入,可以导入,但是它只能导入最大为8K大电子表格啊,能改吗?在线等。
      

  11.   

    楼主没看到上面写的
    select * from 
    改为
    select 序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注 from
      

  12.   

    在企业管理器里,有个TDS,是专门导数据的工具,可以选择不同的数据源导入导出,并且可以设置字段对导;可以试一下
      

  13.   

    用语句导时注意
    insert mytest(序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注)
    select *--查询一下对应的列与插入列的属性要一致
    from openrowset('Microsoft.Jet.OLEDB.4.0','EXCEL 8.0;HDR=YES;User id=sa;Password=;IMEX=1;
    DATABASE=F:\Documents and Settings\Administrator\桌面\2006.xls', sheet1$)--加上用户名,和密码
      

  14.   

    先查询一下再导入,用openrowset查询出来的格式与表格格式是不一致的,以查询出来的格式为准
      

  15.   

    opchao(逗逗) 
    ---------------------------------------
    如何更改 Excel导入sqlserver2000文件大小?能吗?我运行了下面的:
    insert into mytest(序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注)
    Select 序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注 
    From OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 8.0;database=C:\2006.xls;HDR=Yes;IMEX=1','select 序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注 from [sheet1$]')
    错误是:------
    OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 为列 '序号' 提供的元数据无效。The data type is not supported.------------
    谢谢,我试试看
      

  16.   

    查询出来的结果有些字段名改变了EXCEL表里的列名。怎么解决呢?
      

  17.   

    我也有遇到过,你要这样操作:
    mytest表中的
    所有类型都为nchar(255),并且都要允许NULL值。
    EXCEL把想要的表按列重新复制到新的EXCEL中再保存关闭。
    怀疑你是EXCEL有多余列您没发现,mytest表中不允许Null值
    再次核对你的每项列名是否有多打字符!insert into mytest(序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注)
    select * from 
    openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;database=F:\Documents and Settings\Administrator\桌面\2006.xls;HDR=Yes;IMEX=1', sheet1$)再执行,绝对不会有错!
      

  18.   

    ****************************借贵地顺便放一帖********************************一个文件夹中====》所有(有很多很多)excel文件的机构都相同
    在查询器里写sql能不能实现把所有excel文件的记录都导入到T_Get表里?PS:使用前台语言包能够办到,就不知道纯tsql能不能办到也许是SQL_DMO吧,但是我不熟,据说它查询记录时需要使用ADO的,如果能使用ADO的话就应该可以使用FSO,只是这样推测了一下************************************************************************************
      

  19.   

    呵呵```我解决了。呜呼哀哉~~~~~~~~~~~~~~~~~~-----------------------------------------------------------------------------------
    insert into mytest(序号,姓名,性别,系班别,出生年月,政治面貌,籍贯,违纪原因,受何处分,发文号,发文时间,备注)
    select * from 
    openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;database=F:\Documents and Settings\Administrator\桌面\2006.xls;HDR=Yes;IMEX=1', sheet1$)
    ----------------------------------------------------------------------------
    是对了。错在我的EXCEL表没有重新设置好列名.EXCEL表里的列名一定要和MYTEST表里的列名一致。
    小问题弄了这么久,给大家加分了啊~~~~~~~~~~~~~~~~~~~~~