c# - Interop.Excel 本地化和 Range.Formula 与 Formulalocal

标签 c# excel excel-formula excel-interop formulas

我正在尝试使用 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/

相关文章:

C# EF Code First 播种数据 - 不断添加(而不是更新)

c# - 从数据库加载后获取黑色图像

c# - 如果文件已经以 Windows 方式存在,则自动重命名文件

excel - 如何使用 VBA 从不同列上显示的包装文本中获取文本

excel - vba excel打开unicode文件名进行二进制访问读取

javascript - 如何在 asp.net mvc 中制作可搜索的 DropDownList

excel - 向自动 Outlook 邮件添加签名

excel - 是否可以仅使用 Excel 公式生成此结果(列表到矩阵布局)?

excel - 从单个单元格中搜索和提取子字符串

python - 比较两列并将相关值添加到第二列