Оператор Excel IF приводит к ошибке: исключение из HRESULT: 0x800A03EC

Я создаю отчет excel на С#. Когда я добавляю формулу, как показано ниже, все работает нормально:

totalCellFormulaRange.Formula = "=SUM(AH7:AS7)"; //totalCellFormulaRange is a Range object from Microsoft.Office.Interop.Excel

Но теперь, когда я пытаюсь добавить формулу, состоящую из оператора if, как показано ниже,

memberGuidesCellFormaulaRange.Formula = "=IF(LEFT(D7;12)=\"Welcome Pack\";O7*$AQ$4;0)";

то я получаю эту ошибку:

Исключение из HRESULT: 0x800A03EC

Приведенный выше оператор if работает на 100%, если он напечатан на листе Excel. Он терпит неудачу только в C#, и исключение возникает сразу же, как только оно попадает в эту строку кода.


person Tumelo    schedule 19.10.2017    source источник
comment
Вы, кажется, используете точки с запятой в своем ЕСЛИ, а не запятые   -  person BugFinder    schedule 19.10.2017
comment
Региональные настройки @BugFinder заставляют некоторых из нас делать это, когда запятая является вашим десятичным разделителем.   -  person rene    schedule 19.10.2017
comment
@BugFinder Синтаксис Excel для оператора it на моей стороне: = IF (logical_test; value_if_true; value_if_false)   -  person Tumelo    schedule 19.10.2017
comment
лучше ли использовать @=IF(LEFT(D7;12)=Welcome Pack;O7*$AQ$4;0) - в противном случае вы делаете много настроек excel одновременно?   -  person BugFinder    schedule 19.10.2017
comment
попробуйте с расчетом приложения excel, установленным на ручной   -  person BugFinder    schedule 19.10.2017
comment
@BugFinder Вы действительно были правы. Когда я попробовал это с запятой, это сработало :)   -  person Tumelo    schedule 19.10.2017
comment
да ... шокер :P   -  person BugFinder    schedule 19.10.2017


Ответы (1)


Хотя локализация для excel позволяет использовать ";" используйте вместо запятых, интерфейс COM не регистрирует ";" вместо этого следует использовать запятую.

memberGuidesCellFormaulaRange.Formula = "=IF(LEFT(D7,12)=\"Welcome Pack\",O7*$AQ$4,0)";

Для получения дополнительной информации о проблемах локализации и некоторых общих указателях при написании кода взаимодействия для Excel, см. этот SO Q&A.

person Jay Wilson    schedule 19.10.2017
comment
Я удалил точки с запятой и вместо них использовал запятые, и теперь это работает - person Tumelo; 19.10.2017