从Excel列获取指数值

我创build了一个函数,读取Excel表格所以有一个字段在Excel中包含值为0.01,但是当我读取这个值时,它变成了一些像这样的指数forms1.2999999999999999E-2所以它抛出exception,当我传递数据表值。 所以我如何读取准确的值避免在代码中。 这里是我的代码阅读Excel表 –

using (var sDoc = SpreadsheetDocument.Open(FileName, false)) { bool emptyTable = false; var sheets = sDoc.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>(); var relationshipId = sheets.First().Id.Value; var worksheetPart = (WorksheetPart)sDoc.WorkbookPart.GetPartById(relationshipId); var workSheet = worksheetPart.Worksheet; var sheetData = workSheet.GetFirstChild<SheetData>(); var rows = sheetData.Descendants<Row>().Skip(IgnoreRows).ToList(); if (rows.Count == 0) { Results = dt; emptyTable = true; } if (!emptyTable) { foreach (var cell in rows.ElementAt(0).Cast<Cell>()) { dt.Columns.Add(GetCellValue(sDoc, cell)); } foreach (var row in rows.Skip(1)) { bool emptyRow = true; var tempRow = dt.NewRow(); for (var i = 0; i < row.Descendants<Cell>().Count(); i++) { string rowValue = GetCellValue(sDoc, row.Descendants<Cell>().ElementAt(i)); tempRow[i] = rowValue; emptyRow = emptyRow && String.IsNullOrWhiteSpace(rowValue); } if (!emptyRow) { dt.Rows.Add(tempRow); } else { break; } } } 

这里是expon值 – 在这里输入图像说明

在这里输入图像说明

你可以尝试这样的东西( for循环中的代码块)

 string rowValue = GetCellValue(sDoc, row.Descendants<Cell>().ElementAt(i)); if (i == 5) // index of column where you're expecting that value { decimal tempDecimal; decimal.TryParse(rowValue, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out tempDecimal); rowValue = tempDecimal.ToString("0.##"); } tempRow[i] = rowValue; emptyRow = emptyRow && String.IsNullOrWhiteSpace(rowValue) 

基本上,代码试图parsing从特定列(我的例子中的5)的值为十进制,然后将其转换回具有两个小数点的string。