导入excel到sqlserver的格式转换问题
DataTable dt = null;
   string connetionStr = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + url + ";" + "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';";
   string strSql = "select * from [不合格单-损失费$]";
   OleDbConnection oleConn = new OleDbConnection(connetionStr);
   OleDbDataAdapter oleAdapter = new OleDbDataAdapter(strSql, connetionStr);
   try
   {
   dt = new DataTable();   
   oleAdapter.Fill(dt);
   return dt;
   }    
string conString = "data source=.;initial catalog=s;integrated security=true";
string sql = "truncate table a";
   SqlConnection con = new SqlConnection(conString);
   SqlCommand cmd = new SqlCommand(sql, con);
   if (con.State == ConnectionState.Closed)
   con.Open();
   cmd.ExecuteNonQuery();
   cmd.Dispose();
   con.Close();
   DataTable dt = CreateExcelDataSource(url); //创建批量DataTable导入Sql    
   SqlBulkCopy copy = new SqlBulkCopy(conString, SqlBulkCopyOptions.UseInternalTransaction); //指定数据库表名    
   copy.DestinationTableName = "a"; //写入Sql    
   copy.WriteToServer(dt);    
我使用以上方法成功将数据从excel导入sqlserver2005了,但是其中有几个字段在数据库里设置的是日期格式,float格式,通过这种批量导入的方法就无法正常导入会报错,而且带小数点的存到数据库中转化成float时数值会改变,比如158.854在数据库中变成了158.8539999999... 求高手指教怎么设置导入时的格式转换
------解决方案--------------------DataTable中数据类型转换得到一个新的DataTable 貌似有点麻烦
------解决方案--------------------前几天我也遇到过这种问题,思考后,觉得在excel里面做数据验证比较好,在datatable里面做也可以不过比较麻烦。