怎么把excel中的科学计数法在存进内存中转换成正常数字(不要求修改excel表)

string strPath = context.Request.QueryString["excel的路径"] as string;
DataSet dataset = Common.ReadEecel(strPath); //读取excel表中所有数据
有懂的帮忙下,在线等
要是解决了,继续加分;
补充:ReadEecel是个方法:内容如下
Encoding.GetEncoding("gb2312");

string mystring = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '"
+ path + "';Extended Properties='Excel 8.0; HDR=YES;IMEX=1'";
cnnxls = new OleDbConnection(mystring);
cnnxls.Open();
DataTable dt = cnnxls.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
DataRow dr = dt.Rows[0];
EXCELSHEETNAME = dr["TABLE_NAME"].ToString();
OleDbDataAdapter oleDbData = new OleDbDataAdapter("select * from [" + dr["TABLE_NAME"].ToString() + "]", cnnxls);
DataSet dataset = new DataSet();
oleDbData.Fill(dataset);

return dataset;

数字在以浮点数储存到内存中后超出精度外的数据都丢失了呀,还能有方法找回?
单精度4字节32位
双精度8字节64位
他们所能表达的十进制有效数字就是7位或者15位,不可能再多,否则就不是浮点数了。追问

那有办法在存进内存之前把科学计数法转意成正常数据么?我试了些方法,但是都没有达到理想的效果

追答

当你在excel输入数据,然后按下回车的一瞬间,数据已经转换成浮点数了。
其实将长数据以文本格式录入是一个比较好的方法,因为哪怕你通过底层的编程使用更多字节来表示整数,那么在应用上不会见得比文本更方便。

追问

恩,我会去试一试的。问题已经解决了,谢谢你们的帮助!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-26
在英文输入法状态下输入单引号,再输入你的数据就没问题了。这种方式下的数据还是可以进行运算的,我试过了
追问

谢谢你的帮助,问题已经解决了!你说的方法,那会有试过的,可是效果不是很理想!

第2个回答  2011-07-26
点击数字,常规,重新设置格式追问

谢谢了!问题已经解决了,至于你说的方法,我上面已经注明了,要求在不改excel的情况下

第3个回答  2011-07-25
直接出就是,不用换,excel的科学计数法是显示格式,不是存储格式追问

由于位数超过了15位,在EXCEL中是科学计数法;存进内存中也是科学计数法的形式,但是,我想把它全部转意过来,我现在只是转意过来一半,只是想了解一下转科学计数法的各种形式,很是叫人烦恼呀

相似回答