今天做一个xls文件导入数据库的东西有一列数据是“车次”。excel里面设置好的单元格格式为文本。但是在导入信息的时候,该列中要不就只能显示纯数字,不带字母的项,要不就只能显示带字母的,导不进数字。。完全不清楚状况。。求高人指点。!!!例如车次信息如果是:
2727
T19
D109
Z891则导入后数据库中第一列就是空的
而如果信息是
2727
T19
1094
8912则导入后数据库中第二列就是空的

解决方案 »

  1.   

    excel很“聪明”,会自动猜测每一列的数据类型,默认的情况下判断前面8行数据,如果字符串多就判断为text,否则如果数字多就判断为number,非常恼火,记得读取csv文件的时候,可以有个schema文件来定义每一列的数据类型,不知道excel文件有没有相关的定义。
    我现在读取excel都只能用office Excel打开,一格一格读。
      

  2.   

    导入的时候有一步是可以有机会修改字段映射的,改成你需要的类型即可。不过我一般为了提高成功率,都先改成nvarchar,全部导入库后再改SQL的。
      

  3.   


    我已经在xls强制设定该列类型为text了有一列本来是时间的,设完text就能当文本读了(防止它莫名其妙补全年月)……
    但是就这个数字+字符的列怎么改都改不好哎,信息量太大,一格一格读不太现实啊……
      

  4.   

    Excel导入数据库的时候-------你是用的数据库导入导出功能吗?SQL2000叫DTS
    SQL2005叫SSISExcel导入数据库的时候,好像是根据前面几行的数据类型来判断具体的类型的如果前面几行是数字类型(把一列设置成文本格式也没用),后面又出现文本类型,那么文本类型的就导进去是null值,如果前面几行是文本类型,后面几行是数字类型,就不会出现null情况解决null的情况,就是在文本前面加[分号(')],就能解决这个问题...............有人会问,一个一个分号,不加死去.
    如果你熟练的运用Excel,是可以批量的给某一列加分号的
      

  5.   


    的确好用!谢谢!但是不能让用户加分号。怎么设置一个列都自带分号呢?。我不会excel。继续求教。。
      

  6.   

    单元格内容前面都加'即可
    或者
    连接字符串
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("excel.xls") + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1;'";
      

  7.   

    参见
    http://dotnet.aspx.cc/file/ADO.NET-Excel-IMEX=1.aspx
      

  8.   


    EXCEl中的数据是怎么来的呢,人自己添加进去的还是程序导出来的,程序导出来的好办....数据前面加个分号即可.......如果是人添加那就没什么办法呢.......数字前面必须加分号(来个硬规定)......因为我们没法改SQL的导入导出功能