导入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里面做也可以不过比较麻烦。