Asp.net的程序需要从excel文件中将数据导入到SQL数据库中,因为web服务器和数据库服务器是分离的,因此程序需要首先从客户端将excel文件读取到web服务器中,然后在web服务器中将excel文件的内容读取到dataset中,然后在执行数据库插入。
由于某些字段不能为空,因此在向数据库插入的时候需要检查某些字段的有效性,如果导入的数据没有错误,才能向数据库导入。以前程序没有问题,能够正常的执行数据导入功能,但是最近发现从客户端上传的excel文件中的字段明明存在内容,但是导入到dataset中却丢失,这样导致数据不能导入。例如:学生学号字段(单元格设置为文本类型),所有的录入数据均有学号信息,但是导入到dataset中间某些记录的学号为空白。我实在不明白其中原因,所以无法解决,望各位给我解决办法。
学号
104001
104002
104003
104004
104005
104006
104007
104008
104009
由于某些字段不能为空,因此在向数据库插入的时候需要检查某些字段的有效性,如果导入的数据没有错误,才能向数据库导入。以前程序没有问题,能够正常的执行数据导入功能,但是最近发现从客户端上传的excel文件中的字段明明存在内容,但是导入到dataset中却丢失,这样导致数据不能导入。例如:学生学号字段(单元格设置为文本类型),所有的录入数据均有学号信息,但是导入到dataset中间某些记录的学号为空白。我实在不明白其中原因,所以无法解决,望各位给我解决办法。
学号
104001
104002
104003
104004
104005
104006
104007
104008
104009
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地址,或者其他的联系方式。
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=F:\your.xls;User ID=Admin;Password=;Extended properties=Excel 8.0')...学生基本信息$
1。将鼠标移动到在需要设置文本类型的标题列,如A上,单击鼠标,选择整个列;
2.然后点鼠标右键,在弹出的菜单上,点击“设置单元格格式”;
3。在设置单元格格式中,“数字”tab上选择文本,数字当作文本处理;
4。然后点击确定;这样,我的理解,就是A1、A2、。AN都是当作文本处理了。难道我的处理方式不对?