2017-08-08 127 views
0

我已经做...Excel的科学记数法在C#中的字符串转换编程

  1. 读取Excel文件内容到数据表
  2. 列一个包含科学记数法数据(例如6.75436E 12)

    string filename = Server.MapPath("testfile.xlsx"); 
        string conStr = ""; 
        string Extension = ".xlsx"; 
        switch (Extension) 
        { 
         case ".xls": //Excel 97-03 
          conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"] 
            .ConnectionString; 
          break; 
         case ".xlsx": //Excel 07 
          conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"] 
             .ConnectionString; 
          break; 
        } 
        conStr = String.Format(conStr, filename, "Yes"); 
        OleDbConnection connExcel = new OleDbConnection(conStr); 
        OleDbCommand cmdExcel = new OleDbCommand(); 
        OleDbDataAdapter oda = new OleDbDataAdapter(); 
        DataTable dt = new DataTable(); 
        cmdExcel.Connection = connExcel; 
    
        //Get the name of First Sheet 
        connExcel.Open(); 
        DataTable dtExcelSchema; 
        dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
        string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString(); 
        connExcel.Close(); 
    
        //Read Data from First Sheet 
        connExcel.Open(); 
        cmdExcel.CommandText = "SELECT * From [" + SheetName + "]"; 
        oda.SelectCommand = cmdExcel; 
        oda.Fill(dt); 
        connExcel.Close(); 
    

    如何科学记数法被转换为实际的数据(例如6754357899912)

+0

嘿你解决了吗? –

回答

0

尝试使用这样的:

double result = Double.Parse("6.75436E+12", System.Globalization.NumberStyles.Float);

* NB,当你将鼠标悬停在C#中的值,它会看起来像科幻仍然但这的确是一个双。

+0

感谢您的快速回复,但这并没有给我想要的价值。输出应该是6754357899912,而不是6754360000000.0 – bluetoro

+0

好吧,这是由Excel中读取的内容引起的问题。 “6.75436”只提供5位小数,而不是你要求的11。这实际上不是一个C#问题,而是一个优秀的问题。忽略,尽管这是你想要做的:选择你的数据,点击右键,然后点击“格式化单元格...”并选择“数字”。这将停止Excel作为科学幻灯片呈现您的数据,从那里你不应该有任何问题在C# –

+0

我完全同意你在这一个。关键是该文件不被手动篡改。 – bluetoro

相关问题