Я пытаюсь создать файл excel с помощью Interop.Excel, но у меня есть 2 локализации, где мне нужно запустить мое приложение WPF.Interop.Excel localization и Range.Formula vs Formulalocal
де-DE и EN-US
Для локализации де-DE моя программа работает отлично (также DE MS Office установлены на моем ноутбуке), но когда я пытаюсь запустить его на сервере EN-US затем У меня проблемы.
Вот фрагмент из исходного кода:
cell = "K" + rowCounter;
Excel.Range ThisRange = xlWorkSheet.get_Range(cell, System.Type.Missing);
string myFunction;
if (Thread.CurrentThread.CurrentUICulture.IetfLanguageTag == "de-DE")
{
myFunction = "=+WENN(I" + rowCounter + "<=J" + rowCounter + ";J" + rowCounter + "-I" + rowCounter + ";\"24:00\"+(J" + rowCounter + "-I" + rowCounter + "))";
ThisRange.FormulaLocal = myFunction;
}
else
{
myFunction = "=+IF(I" + rowCounter + "<=J" + rowCounter + ";J" + rowCounter + "-I" + rowCounter + ";\"24:00\"+(J" + rowCounter + "-I" + rowCounter + "))";
ThisRange.Formula = myFunction;
}
И я всегда получаю вид этого исключения:
Исключение: System.Runtime.InteropServices.COMException (0x800A03EC): Исключение из HRESULT: 0x800A03EC на System.RuntimeType.ForwardCallToInvokeMember (String MemberName, BindingFlags флагов, целевой объект, Int32 [] aWrapperTypes, MessageData & msgData) при Microsoft.Office.Interop.Excel.Range.set_Formula (значение объекта)
Я также попытался изменить локализацию на de-DE при распознавании различной локализации - не помогло.
Знаете ли вы, что может быть неправильным?
Заранее спасибо.
'Range.Formula' всегда использует обозначения формул в en_us. Таким образом, имена функций являются английскими, но и разделитель параметров - это запятая, а не точка с запятой. Попробуйте 'myFunction =" = + IF (I "+ rowCounter +" <= J "+ rowCounter +", J "+ rowCounter +" -I "+ rowCounter +", \ "24:00 \" + (J "+ rowCounter + "-I" + rowCounter + "))"; '. Btw. из-за 'Range.Formula' всегда используется обозначение формулы в en_us, нет необходимости различать локаль. –