it-swarm.com.de

formel in Excel über Epplus aufrufen

Ich habe eine Excel-Tabelle in einem ASP.NET MVC4-C # -Projekt und kann mit EPPlus erfolgreich aus einer Excel-Tabelle lesen. Nun möchte ich in der Lage sein, 2 Zahlen in Zelle C: 2 und C: 3 zu übergeben und Formel in C: 4 aufzurufen, die = SUM (C2: C3) ist. 

Ich möchte also von C # 4 und 6 übergeben und die Formel aufrufen und das Ergebnis von C: 4, also 40 (SUMME von 10 und 30), zurückholen können. Wie mache ich das in C #? 

Im folgenden Code bekomme ich für d.Average wieder Null

d.Average = Convert.ToDouble(currentWorksheet.Cells["C4"].Value);

Hier ist mein folgender Code in c #, um eine Zeile zu durchlaufen.

        using (var package = new ExcelPackage(existingFile))
        {
            ExcelWorkbook workBook = package.Workbook;
            var currentWorksheet = workBook.Worksheets.First();
            currentWorksheet.Workbook.CalcMode = ExcelCalcMode.Automatic;
            currentWorksheet.Cells["C4"].Formula = "=SUM(C2:C3)";
            currentWorksheet.Cells["C2"].Value = 10;
            currentWorksheet.Cells["C3"].Value = 30;
            package.Save();


        }

        using (var package = new ExcelPackage(existingFile))
        {
            ExcelWorkbook workBook = package.Workbook;
            var currentWorksheet = workBook.Worksheets.First();
            d.Average = Convert.ToDouble(currentWorksheet.Cells["C4"].Value);
        }
11

Überspringen Sie den = in der Formelzeichenfolge.

currentWorksheet.Cells["C4"].Formula = "=SUM(C2:C3)"; ersetzen 

mit 

currentWorksheet.Cells["C4"].Formula = "SUM(C2:C3)";

18
ogborstad

Ab EpPlus 4.0.1.1 gibt es eine Erweiterungsmethode Calculate(this ExcelRangeBase range). Rufen Sie es auf, bevor Sie auf die Eigenschaft Value zugreifen:

currentWorksheet.Cells["C4"].Calculate();

und currentWorksheet.Cells["C4"].Value gibt danach den erwarteten Wert von 40 zurück.

9
Deilan

Ich habe meine vorherige Antwort durchgesehen und herausgefunden, dass sich die Berechnungsmaschine von EPPLUS noch in der Entwicklung befindet.

Siehe diese Diskussion über CodePlex. (aus dem Jahr 2011)

Ein Zitat von der Roadmap-Seite:

Version 3.2

Formula Parser, Calc Engine

Paket-API durch DotNetZip ersetzen

Neuer Cellstore zum Einfügen, Löschen von Leistung und Speicherverbrauch

Zuletzt bearbeitet am 14. Februar 2013

0
Patrick Hofman