ExcelDataReader не читает числа с запятой, такие как «123,45» (вместо этого «123,45») - PullRequest
0 голосов
/ 21 января 2020

Как я могу прочитать значения с плавающей запятой, такие как 123,45?

Я должен читать файлы Excel сторонних производителей, отформатированные как 123,45, и я не могу / не могу переформатировать их в 123.45.

Я сейчас использую этот метод:

    string GetCell(int row, int col)
    {
        if (Sheet != null)
        {
            try
            {
                string cellContent = Sheet[row][col].ToString(); // careful "ToString()" syntax!
                //Print("Excel.Get({0},{1}): {2}", row, col, cellContent);
                return cellContent;
            }
            catch (Exception e)
            {
                Print("Excel.Get("+row+","+col+") error: "+ e.Message);
                return null;
            }
        }
        else
        {
            Print("Excel.Get("+ row + ","+ col+") error: sheet is null");
            return null;
        }
    }

, но строка возвращается как 12345.

Заранее спасибо!

1 Ответ

3 голосов
/ 21 января 2020

Вы можете попытаться указать культуру

    string valueRead = "123,45";
    CultureInfo frenchCultureInfo = new CultureInfo("fr-FR");
    float valueParsed = float.Parse(valueRead, frenchCultureInfo);

РЕДАКТИРОВАТЬ: согласно вашему комментарию, вы можете указать культуру, используя взаимодействие Excel. Другие варианты включают чтение значений в виде строки и использование float.Parse или изменение языка текущего потока.

Я использовал французский, потому что запятая является десятичным разделителем в этом языке, но, конечно, любой другой язык, для которого это дело должно соответствовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...