我正在尝试使用 Interop.Excel 生成 excel 文件,但我有 2 个本地化版本,我需要在其中运行我的 WPF 应用程序。
de-DE 和 en-US
对于本地化 de-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 的异常:System.RuntimeType.ForwardCallToInvokeMember 的 0x800A03EC(字符串成员名称,BindingFlags 标志,对象目标,Int32 [] aWrapperTypes,MessageData 和 msgData)在 Microsoft.Office.Interop.Excel .Range.set_Formula(对象值)
当识别出不同的本地化时,我还尝试将本地化更改为 de-DE - 没有帮助。
请问您知道可能出了什么问题吗?
先感谢您。
最佳答案
根据 Axel 的评论,问题出在分隔符上:
Range.formula 需要 ,
Range.formulalocal 需要 ;
我已经在我的源代码中修复了它,现在它工作正常。
关于c# - Interop.Excel 本地化和 Range.Formula 与 Formulalocal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32749946/