[英]Excel File Upload Changing Data Type
我必须上传excel文件,我具有格式正确的excel文件,我有一个包含大数字的列,因此在excel中它显示带指数的数字,例如,我有这个值8.99681E + 18(8996812351321100000)
我正在通过在运行时读取数据表来制作数据表,制作数据表后,此值已更改为(8996812351321100288)。 我就是这样
var conn = new OleDbConnection();
if (fileExtension == ".xls")
//4.0 Connection String
if (fileExtension == ".xlsx")
//12.0 Connection String
conn.Open();
DataTable dtSheets = conn.GetSchema("Tables");
string firstSheet = dtSheets.Rows[0]["TABLE_NAME"].ToString();
using (var comm = new OleDbCommand())
{
comm.CommandText = "select * from [" + firstSheet + "]";
comm.Connection = conn;
using (var da = new OleDbDataAdapter())
{
da.SelectCommand = comm;
da.Fill(dt);
if (dt.Columns.Contains("SIMNo"))
{
DataTable dtCloned = dt.Clone();
dtCloned.Columns["SIMNo"].DataType = typeof(Int64);
foreach (DataRow row in dt.Rows)
{
dtCloned.ImportRow(row);
}
return dtCloned;
}
return dt;
}
}
有没有一种方法可以在创建DataTable之前在运行时更改SIMNo的数据类型?我该怎么做?
将8996812351321100000.0
为Int64
会产生精确的舍入误差。
(Int64)8996812351321100000.0 // == 8996812351321100288
而是使用decimal
数据类型,因为它旨在表示十进制数字而没有舍入问题。 或者,因为它是一个没有任何算术运算的数字,所以只需使用string
。
我认为,BigInt应该会有所帮助。
http://www.carljohansen.co.uk/bigint/.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.