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);
}
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.
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