Asp.net的程序需要从excel文件中将数据导入到SQL数据库中,因为web服务器和数据库服务器是分离的,因此程序需要首先从客户端将excel文件读取到web服务器中,然后在web服务器中将excel文件的内容读取到dataset中,然后在执行数据库插入。
由于某些字段不能为空,因此在向数据库插入的时候需要检查某些字段的有效性,如果导入的数据没有错误,才能向数据库导入。以前程序没有问题,能够正常的执行数据导入功能,但是最近发现从客户端上传的excel文件中的字段明明存在内容,但是导入到dataset中却丢失,这样导致数据不能导入。例如:学生学号字段(单元格设置为文本类型),所有的录入数据均有学号信息,但是导入到dataset中间某些记录的学号为空白。我实在不明白其中原因,所以无法解决,望各位给我解决办法。
学号
104001
104002
104003
104004
104005
104006
104007
104008
104009

解决方案 »

  1.   

    附上导入代码:
    string strConn;
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
    "Data Source="+sFileName+";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"";
    string strSQLCommand="SELECT * FROM [学生基本信息$]";

    System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
    System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strSQLCommand, strConn);
    myCommand.Fill(ds,"students");DataGrid1.DataSource=ds.Tables["students"];
    DataGrid1.DataBind();文件传到web服务器上,检查excel文件没有问题。但是一旦导入到ds中就发现数据丢失了。通过DataGrid1检查,也发现学号信息丢失。奇怪啊!以前一直正常运行。
    我可以提供出现这样问题的excel文件,如果那位大侠有兴趣研究,请留下email地址,或者其他的联系方式。
      

  2.   

    你试试在sql的查询分析器里,执行下面语句,获取的是不是完整的。如果不是,那就是数据类型的问题了。SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
     'Data Source=F:\your.xls;User ID=Admin;Password=;Extended properties=Excel 8.0')...学生基本信息$
      

  3.   

    我试过了,在Sql查询分析器里执行,发现获取的仍然不完整。数据类型的问题?能不能解释清楚一点。
      

  4.   

    把你的Excel的文件的格式全部设置为文本试一下
      

  5.   

    我是这么设置的,所有的excel文件的格式已经全部设置为文本了。要不请留下email,我把我的excel文件发给你,请你试试看看。
      

  6.   

    reddg(reddg),我已经给你发了,麻烦你查收。
      

  7.   

    你鼠标点在看不到的第一行(excel中),可以看到多了个“'”,这是文本类型的处里。而上面的数据确实数值类型的。sql的处理数据方式是以第一行数据的类型为准,不同的数据类型,做NULL处理。
      

  8.   

    我是这样设置文本类型的:
    1。将鼠标移动到在需要设置文本类型的标题列,如A上,单击鼠标,选择整个列;
    2.然后点鼠标右键,在弹出的菜单上,点击“设置单元格格式”;
    3。在设置单元格格式中,“数字”tab上选择文本,数字当作文本处理;
    4。然后点击确定;这样,我的理解,就是A1、A2、。AN都是当作文本处理了。难道我的处理方式不对?
      

  9.   

    你鼠标点在看不到的第一行(excel中),可以看到多了个“'”,这是文本类型的处里。而上面的数据确实数值类型的。sql的处理数据方式是以第一行数据的类型为准,不同的数据类型,做NULL处理。在excel中怎么判断,数据类型不一致?