web-dev-qa-db-fra.com

invoquer une formule dans Excel via epplus

J'ai une feuille Excel dans le projet ASP.NET MVC4 C # et je suis capable de lire des feuilles Excel avec succès en utilisant EPPlus. Maintenant, je veux pouvoir passer 2 nombres dans les cellules C: 2 et C: 3 et pouvoir invoquer la formule dans C: 4 qui est = SUM (C2: C3). 

Donc, en C #, je veux passer en 4 et 6, invoquer la formule et pouvoir obtenir le résultat en C: 4, qui est 40 (Somme de 10 et 30). Comment puis-je accomplir cela en C #. 

Dans le code suivant, je récupère zéro pour d.Average

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

Voici mon code suivant en c # jusqu'à présent pour parcourir une ligne.

        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
dotnet-practitioner

Depuis EpPlus 4.0.1.1, il existe une méthode d'extension Calculate(this ExcelRangeBase range). Invoquez-le avant d'accéder à la propriété Value:

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

et currentWorksheet.Cells["C4"].Value renverra la valeur attendue de 40 après cela.

9
Deilan

J'étais en train de réviser ma réponse précédente et j'ai découvert que le moteur de calcul d'EPPLUS est toujours en développement.

Voir cette discussion sur CodePlex. (datant de 2011)

Citation de la page de la feuille de route:

Version 3.2

Analyseur de formules, moteur de calcul

Remplacement de l'API de package avec DotNetZip

Nouveau magasin de cellules pour améliorer l'insertion, la suppression de performances et la consommation de mémoire

Dernière édition le 14 février 2013

0
Patrick Hofman