excel是先填入了数据,又设置成文本格式的,插入到sql的表中有的就显示成科学计数法的格式,有没有办法不修改excel的格式,修改代码,让表显示正确?
我设置断点看了一下,程序中从excel中读取的时候就已经是科学计数法的格式了,比如在excel中数据时33010061,在代码中插入到表中时就已经是科学计数法了,是不是非得要先设置成文本格式,再填入数据才行?我现在这个是填入了数据了,又设置成文本格式的。
追答对,sql建表的时候就先设置成字符型。
追问sql的表是设置成varchar类型了,但excel是不是非得要先设置成文本格式,再填入数据才行?我现在这个是填入了数据了,又设置成文本格式的。
追答在excel中先填数字,再设置文本格式。插入数据库之前再看看excel,是不是已经变成科学计数法的样子了?
追问没有,不过如果excel中那一列的宽度很窄的话,就变成科学计数法了,如果是较宽的就正常显示。。。
追答那说明仍旧是格式。
不是太懂,麻烦能详细说一下吗
追答昨天下班了,现在给你源代码看。再不行发邮件到我邮箱[email protected]给你解答!
DataTable dt = new DataTable();
try
{
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + Path + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = "select * from ["+ TableName + "$]";//此处TableName是Excel的sheet名
myCommand = new OleDbDataAdapter(strExcel, strConn);
dt = new DataTable();
myCommand.Fill(dt);
conn.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
问题已经解决了,谢谢你了,不过没有分了。。。
是varchar类型的。
追答如果这列肯定是数字的话,可以加个判断,如果是科学计数法,转换成数字。有现成的转换方法的。
来自:求助得到的回答字段?什么意思,麻烦详细说一下,谢谢
追答是否可以将其设置为float类型