ExcelCom 将公式写入单元格会导致#name?

ExcelCom writing formula into cell results in #name?

在我的项目中,我必须将公式填充到 ExcelSheet 的单元格中。为此,我使用 Microsoft.Office.Interop.Excel 库。

代码本身非常简单

mySheet.Cells[1, 1] = SomeString;
mySheet.Cells[1, 2].Formula = "=SUMME($E:E" + SomeInteger + ")";

就这样了。 (因为我住在德国,所以我的 excel 版本将 "Summe" 理解为 "SUM"

现在查看 excel sheet,结果是 #name?。 当单击单元格并强制更新时,它计算得很好。

I found a few posts related to this, but the link they provided with the solution does not exist anymore. (And are about 10 years old)

我尝试了以下步骤:

我很高兴收到你们的来信 - 更有经验的 - 伙计们...

谢谢!

详情: Excel版本:2016 Windows10

PS:这是我的第一个问题。所以如果你有一些关于这方面的建议,我也很高兴!

我不在我的开发计算机上验证这一点,但是我认为如果你将第二行更改为 ...

mySheet.Cells[1, 2].Value2 = "=SUMME($E:E" + SomeInteger + ")";

你可能会得到你想要的结果。

我有同样的问题,但公式是西班牙语。
我的解决方案分为两部分:

1) 在初始化之前将文化更改为英语 Excel 互操作:

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
_AppExcell = new Microsoft.Office.Interop.Excel.Application();

2) 用英文写公式:

mySheet.Cells[1, 2].Formula = "=SUM($E:E" + SomeInteger + ")";

不必将您的公式转换为英文版本并添加 CultureInfo,您可以简单地使用“FormulaLocal”而不是“Formula”。它就像一个魅力。

所以不用

mySheet.Cells[1, 2].Formula = "=SUMME($E:E" + SomeInteger + ")"; //#NAME

你会用

mySheet.Cells[1, 2].FormulaLocal = "=SUMME($E:E" + SomeInteger + ")";