這是我的第一個問題,所以我希望我做的一切都好。多語言excel格式條件公式在c#
我想將一些格式(例如背景顏色)應用於excel範圍的偶數行或奇數行。我正在嘗試使用FormatCondition.Add方法。
問題是,應用程序必須在不同的excel語言(如西班牙語)中工作。當我在Add方法中使用公式=MOD(ROW(),2)
將格式僅應用於偶數行或奇數行時,它會引發一個參數異常。這裏用西班牙語:
System.ArgumentException:El valor noestádentro del intervalo esperado。
在這裏,我最好的異常翻譯:
System.ArgumentException:值不是預期的 間隔之間。
問題似乎是公式中的,
字符。如果我使用;
,則異常消失,但隨後excel不會轉換公式,因此,當我用西班牙語打開excel文件時,條件格式不起作用。我必須使用公式=RESIDUO(FILA();2)
的西班牙語版本,但這不適用於英語。而如果把公式中它的工作原理以及一些randome細胞(所以我想公式是沒有錯的):
excelSheet.Cells[1, 1] = "=MOD(ROW(),2)";
我的問題是:如何使用多語言公式FormatConditions.Add方法?
我的代碼看起來是這樣的:
excelRange = excelRange.FormatConditions.Add(Excel.XlFormatConditionType.xlExpression,
Formula1: "=MOD(ROW(),2)=" + par);
「相提並論」是偶數還是奇數來區分的變量。
我試圖改變線程文化:
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"));
但結果總是相同的。
如果你有一些線索來幫助我,將非常感激。謝謝大家。
上傳:對不起,我的英文,我希望我已經解釋過它不是太糟糕。