У меня возникли некоторые проблемы при чтении значения из листа Excel 2010.
На стандартном листе Excel 2010 у меня есть ячейка с форматом валюты с двумя десятичными знакамимест и значение 1270,14 €
.
Когда я читаю это значение в OpenXML 2.0 (код C #), я получаю 1270.1400000000001
вместо исходного 1270.14
.
То же самое происходит с другимизначения в любой ячейке с одинаковым форматированием.
Получение значения из кода OpenXML ячейки:
private string GetCellValue(string column, int row)
{
column = column.ToUpper();
var targetCell = cells.Where(p => p.CellReference == (column + row)).SingleOrDefault();
var value = String.Empty;
if (targetCell.DataType != null && targetCell.DataType.Value == CellValues.SharedString)
{
var index = int.Parse(targetCell.CellValue.Text);
value = cellValues[index].InnerText.Trim();
}
else
{
if (targetCell.CellValue != null)
{
value = targetCell.CellValue.Text.Trim();
}
else
{
value = null;
}
}
return value;
}
Конкретное значение передается через тип данных if, если оно не является нулевым условием, и получает значениестрока:
value = targetCell.CellValue.Text.Trim();
Как это можно исправить?
Почему эта ошибка вообще возможна?