Преобразование десятичной дроби в файле Excel в деньги C#

#c#

#c#

Вопрос:

Я создал консольное приложение для чтения файла Excel и создания новой записи в Microsoft CRM. Эта программа отлично работает на моем ноутбуке. Но когда я перемещаю программу на наш производственный сервер, она не считывает значение так, как должна.

Это мой код:

  Selling = row["Column5"].ToString();

 if (!String.IsNullOrEmpty(Selling))
 {
     Decimal total_selling = 
     Convert.ToDecimal(Selling,CultureInfo.InvariantCulture);
     sales_contract["new_actualsalesvalue"] = new Money(total_selling);
 }
 else
 {
     sales_contract["new_actualsalesvalue"] = null;
 }
  

Пример:

Десятичное значение 7,098.44

Когда программа запускается с моего ноутбука, в CRM отображается: $ 7,098.44

Но когда программа запускается с производственного сервера, она показывает: $ 709 844,00

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

Комментарии:

1. Ваша программа должна учитывать, что десятичный разделитель при запуске на рабочем сервере может отличаться от вашего ноутбука. Эта проблема может также возникать с форматами дат, числовых форматов и т.д..

2. Вы анализируете данные как инвариантные к культуре, но так ли это на самом деле? Я не уверен, но я думаю, что Excel использует местную культуру, а не инвариант.

3. @raven привет, спасибо за предложение. Это делается путем изменения формата даты и десятичного разделителя через панель управления. Не могли бы вы дать свой ответ ниже, я отмечу его как ответ на этот вопрос