多语言excel格式条件公式在c#

这是我的第一个问题,所以我希望我做的一切都好。

我试图将一些格式(例如背景颜色)应用于excel范围的偶数行或奇数行。 我试图使用FormatCondition.Add方法。

问题是,应用程序必须在不同的excel语言(如西class牙语)工作。 当在Add方法中使用公式=MOD(ROW(),2)将格式应用于偶数行或奇数行时,会引发一个参数exception。 这里用西class牙语:

System.ArgumentException:El valor noestádentro del intervalo esperado。

在这里,我最好的例外翻译:

System.ArgumentException:该值不在预期的时间间隔之间。

问题似乎是公式中的字符。 如果我使用; exception消失,但然后excel不翻译公式,所以当我打开西class牙语的Excel文件条件格式不起作用。 我必须使用公式=RESIDUO(FILA();2)的西class牙语版本,但是这不会英文。 如果把公式放在一些随机单元格中,效果很好(所以我猜这个公式没有错):

 excelSheet.Cells[1, 1] = "=MOD(ROW(),2)"; 

我的问题是:如何在FormatConditions.Add方法中使用多语言公式?

我的代码如下所示:

 excelRange = excelRange.FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1: "=MOD(ROW(),2)=" + par); 

“par”是区分偶数还是奇数的variables。

我试过改变线程文化:

 System.Globalization.CultureInfo before = System.Threading.Thread.CurrentThread.CurrentCulture; try { System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); excelRange = excelRange.FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1: "=MOD(ROW(),2)=" + par); } finally { System.Threading.Thread.CurrentThread.CurrentUICulture = before; } 

并使用Type.InvokeMember方法来定义文化信息:

 Excel.FormatConditions aux = excelRange.FormatConditions; Object[] args = { Excel.XlFormatConditionType.xlExpression, Type.Missing, "=MOD(ROW(),2)=" + par }; excelRange = aux.GetType().InvokeMember("Add", System.Reflection.BindingFlags.InvokeMethod | System.Reflection.BindingFlags.Public, null, aux, args, culture: new System.Globalization.CultureInfo("en-US")); 

但结果总是一样的。

如果你有一些线索来帮助我,我将非常感激。 谢谢大家。

PS:对不起我的英文,我希望我已经解释过,不是太糟糕。

我find了解决scheme(不是我想的最好的解决scheme,但无论如何…),我从这里接受了这个想法

基本的想法是使用单个单元格将英文公式,然后从Range.FormulaLocal 属性获取翻译的公式:

 Excel.Range temp = excelSheet.get_Range("a1"); dynamic tempValue = temp.Value2; temp.Formula = "=MOD(ROW(),2)=" + par; String formula = temp.FormulaLocal; temp.Formula = ""; temp.Value2 = tempValue; excelRange = excelRange.FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, Formula1: formula); 

我希望这可以帮助未来的人。