J'ai essayé d'utiliser deux fonctions dans Excel INDEX et MATCH et selon EPPlus codeplex, these should be supported. Chaque fois que j'ouvre le fichier, il y a un message d'avertissement disant que quelque chose est cassé et demande si je veux réparer le document, et quand il s'ouvre, toutes les formules ont disparu. Lors de la réparation du document, une boîte de dialogue s'affiche indiquant que la formule a été supprimée de /xl/worksheets/sheet1.xml-del
.La formule EPPlus ne fonctionne pas sans appeler Calculer
Je peux placer les formules manuellement dans la feuille de spécifications et elles fonctionnent, mais la seule façon d'obtenir des données à afficher dans le fichier xlsx généré est d'appeler Calculate()
dans la feuille de calcul. Cela va sortir les données correctement, mais ce dont j'ai besoin, c'est d'avoir les formules dans le document.
Voici un petit exemple de formules que j'ai essayé
private byte[] TestingFormula()
{
using (ExcelPackage pck = new ExcelPackage(_helper.GetTemplateStream("TEST.xlsx")))
{
var ws = pck.Workbook.Worksheets[1];
ws.Cells["A4"].Formula = "INDEX($C$1:$D$24;4;2)";
ws.Cells["A6"].Formula = "INDEX(C1:D24;6;2)";
ws.Cells["B26"].Formula = "MATCH($B$12;$C$1:$D$1;0)";
// sum works as expected
//ws.Cells["D25"].Formula = "SUM(D2:D24)";
//pck.Workbook.Calculate();
//pck.Workbook.CalcMode = ExcelCalcMode.Automatic;
return pck.GetAsByteArray();
}
}
Le TEST.xlsx est juste un modèle qui ressemble à ceci
Alors, que suis Je fais mal ici?
Pourquoi vos formules utilisent-elles des points-virgules au lieu de virgules? Je n'ai pas testé, mais je pense que "" INDEX ($ C $ 1: $ D $ 24,4,2) "' fonctionnerait très bien. – reasra
J'ai utilisé des formules existantes que je viens de copier. L'utilisation de virgules à la place du point-virgule a résolu le problème, donc je suppose qu'epplus ne gère pas les points-virgules, juste Excel. – Binke