#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 привет, спасибо за предложение. Это делается путем изменения формата даты и десятичного разделителя через панель управления. Не могли бы вы дать свой ответ ниже, я отмечу его как ответ на этот вопрос