表格创建和 插入代码:
 with adoquery1 do
  close;
  adoquery1.sql.Clear;
  adoquery1.ParamCheck := false;
  adoquery1.SQL.Text :='CREATE TABLE ['+tablename+'](物料编号 varchar(20) ,物料类型 varchar(20),物料名称 varchar(20),数量 varchar(20),总重量 varchar(20),货物来源 varchar(20),货主名称 varchar(20),联系方式 varchar(20),入库时间 varchar(20) ,备注 varchar(20))';
  adoquery1.execsql;
  adoquery1.sql.Clear;
  adoquery1.sql.text :='INSERT ['+tablename+'] SELECT * FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',''Data Source='+strpath+';User ID=Admin;Password=;Extended properties=Excel 5.0'')...[sheet1$];';
  adoquery1.execsql;

解决方案 »

  1.   

    关系数据库本身是不注重记录的顺序的
    输出顺序 取决于 查询的排序字段(order by xxx,xxx,...)
      

  2.   

    把数据导入以后,SQL表中  备注字段的值 跑到了物料编号中,入库时间的值 跑到了其他字段中。意思是这样......
      

  3.   

    字段对应不上,看下你的EXCEL文件是不是对的?有没有列错位。
      

  4.   

    excel的字段和我创建的这个表的字段一样 位置也一样 没有错位。
      

  5.   

    图不知道怎么截 要输入网址, 我复制下来吧
    EXC中
    物料编号 物料类型 物料名称 数量 总重量 货物来源 货主名称           联系方  入库时间  备注
    yy1357 原料烟叶 香料烟 1箱 200 云南保山 保山香料烟厂 15623265447 2011-8-9 10:20 AM 变形
    导入SQL后
    物料编号 物料类型 物料名称     数量    总重量    货物来源     货主名称     联系方   入库时备注
    变形     云南保山  保山香料烟厂 1.52354e+010 08 09 2011 10.20 AM 1箱  yy1357 原料烟叶 香料烟 200
      

  6.   

    LZ excel的内容里是不是有特别的回车换行呢?或者在格子里有隐藏但是看不到的内容?例如把excel出错的单元格编辑下,看看里面的内容
      

  7.   

    另外导入sql内容是全部乱序还是从固定行开始呢?
    试试看加上这句管用么? Password=;HDR=Yes;
      

  8.   

    还是你的Excel的问题
    你创建的语句
    CREATE TABLE ['+tablename+'](物料编号 varchar(20) ,物料类型 varchar(20),物料名称 varchar(20),数量 varchar(20),总重量 varchar(20),货物来源 varchar(20),货主名称 varchar(20),联系方式 varchar(20),入库时间 varchar(20) ,备注 varchar(20))
    是联系方式你的Excel里面却是:联系方你修改下看看
      

  9.   

    insert builderinfo(B_card,B_name,B_xb,B_jg,B_xl,B_gz,B_sfzh,B_gzdw,B_bz,b_lrsj,b_oper,b_csny) 
    SELECT 卡号,姓名,性别,籍贯,学历,工种,身份证号,工作单位,备注,getdate(),'管理员',
    case when len(身份证号)=8 then 身份证号 when len(身份证号)=15 then '19'+substring(身份证号,7,6) when len(身份证号)=18 then substring(身份证号,7,8) end 
    from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:\Documents and Settings\Administrator\桌面\导入标准格式.xls"
    ;Extended Properties="Excel 8.0;HDR=Yes;";Persist Security Info=False')...[安全卡培训表$]
      

  10.   

    select excel时可以自己指定顺序!
      

  11.   


    INSERT into TestB([物料编号],[物料类型],[物料名称],[数量],[总重量],[货物来源],[货主名称],[联系方式],[入库时间],[备注]) SELECT [物料编号],[物料类型],[物料名称],[数量],[总重量],'+'[货物来源],[货主名称],[联系方式],[入库时间],[备注] FROM OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source=C:\test.xls;Extended properties=Excel 8.0'')...[Sheet1$]还是指定一下对应的字段吧,试了下不指定还真的乱了
      

  12.   

    加上这句就出错啦,不能导入啦。是这样加把''Microsoft.Jet.OLEDB.4.0'',''Data Source='+strpath+';User ID=Admin;Password=;HDR=Yes;Extended properties=Excel 5.0''这样不行
      

  13.   

    。。就是加上了指定对应的字段而已。  with adoquery1 do
      begin
        close;
        adoquery1.sql.Clear;
        adoquery1.ParamCheck := false;
        adoquery1.sql.text :='INSERT into ['+tablename+']([物料编号],[物料类型],[物料名称],[数量],[总重量],[货物来源],[货主名称],[联系方式],[入库时间],[备注]) SELECT '
                              +' [物料编号],[物料类型],[物料名称],[数量],[总重量],[货物来源],[货主名称],[联系方式],[入库时间],[备注] '
                              +' FROM OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source=C:\test.xls;Extended properties=Excel 5.0'')...[Sheet1$]';
        adoquery1.execsql;
      end;
      

  14.   

    因为你的excel第一行联系方式是数字,导入时默认为int行了,当然不能再存入文本内容了,方法修改下数据库字段类型即可
      

  15.   

    方法2,把excel第一行联系方式里加入一个中文标点符号,导入即可