2017-08-27 2 views
0

ich eine Formel in closedxml verwendet:berechnen Formel in closedxml

var result = worksheet.Cell(3, 8); 
result.FormulaA1 = "=IF(ISNA(VLOOKUP(G3,OrganizationUnitsById,2,FALSE))," 
       + "" 
       + ",VLOOKUP(G3,OrganizationUnitsById,2,FALSE))"; 

Wenn ich diese Formel vor verwendet, es funktionierte perfekt. Aber dann habe ich etwas geändert, dann hat diese Formel nicht automatisch berechnet. Ich habe Datei von einer Anwendung gespeichert, diese Formel funktioniert aber nicht automatisch berechnet.

Was ist los?

+0

Ich habe es in ClosedXML erstellt. Aber Berechnung ist nicht geschehen. Wenn ich Excel öffne und ich diese Formel wieder gebe, dann berechne es –

+0

Wie kann ich die Berechnung auf eine andere Weise tun? –

+0

Aber ClosedXML hat Berechnungsmodus Eigenschaft, ich habe es verwendet, es hat nicht wieder funktioniert –

Antwort

2

haben meine Experimente zeigten, dass die Formel die folgende Ausnahme ausgelöst:

Eine nicht behandelte Ausnahme des Typs 'System.NotSupportedException' in ClosedXML.dll aufgetreten

Hier ist die TestRig:

var wb = new ClosedXML.Excel.XLWorkbook();   
var worksheet = wb.AddWorksheet("test"); 

worksheet.Cell("G3").Value = "fu"; 

worksheet.Cell("A1").Value = "fu"; 
worksheet.Cell("B1").Value = "bar"; 
worksheet.Cell("C1").Value = "baz"; 
worksheet.Cell("A2").Value = "fu2"; 
worksheet.Cell("B2").Value = "bar2"; 
worksheet.Cell("C2").Value = "baz2"; 

worksheet.Range("A1:C2").AddToNamed("OrganizationUnitsById"); 

var result = worksheet.Cell(3, 8); 
result.FormulaA1 = "=IF(ISNA(VLOOKUP(G3,OrganizationUnitsById,2,FALSE))," 
       + "" 
       + ",VLOOKUP(G3,OrganizationUnitsById,2,FALSE))"; 
wb.CalculateMode = ClosedXML.Excel.XLCalculateMode.Auto; 
Console.WriteLine(result.Value); // throws exception 

Der Grund, warum es ausgelöst wird, wird durch die Verwendung der ISNA-Funktion in Ihrer Formel verursacht. Es isn't yet implemented. Das Entfernen von ISNA aus Ihrer Formel behebt die Berechnungsprobleme, führt jedoch zu einem anderen Verhalten dieser Formel.

Sie müssen eine Alternative für die ISNA Funktion finden. Wählen Sie zum Zeitpunkt des Schreibens eine der folgenden Optionen aus: ISBLANK, ISEVEN, ISLOGICAL, ISNUMBER, ISODD, ISTEXT, N, oder gestalten Sie die Daten in Ihrer Nachschlagetabelle so, dass Sie die Prüfung auf "ISNA" nicht benötigen.

Da mein Beispiel mit 0.88 getestet wurde, konnte die Beta-Version ClosedXML 0.89.0-beta1 abgerufen werden, da ISNA implementiert ist.

+0

Aber wenn ich diese Formel verwendet: "= SVERWEIS (G3, OrganizationUnitsById, 2, FALSE) .Ergebnis ist das gleiche –

+0

Nicht in meiner Prüfung, dann funktioniert es – rene

+0

Wenn ich öffne, wird es die erste Zeile in einer Tabelle funktionieren, dann wenn Ich möchte die zweite oder dritte Zeile in einer Tabelle eingeben, die Berechnung wird nicht funktionieren. Es ist ein Problem. Können Sie mich verstehen? –

Verwandte Themen