2017-08-31 5 views
0

Je tente de créer une formule simple de SUM(E1:E6) mais continuer à obtenir un Value cannot be null. Parameter name: stream. J'ai mis un = à l'avant et même fait en minuscules sans succès. Une formule que j'ai pu mettre au travail était 1 + 3 + 8. J'ai ensuite essayé E1 + E2 + E3 + E4 + E5 + E6 et cela a donné la même erreur.NPOI de base - Formule Problème

Voici mon code:

IWorkbook workbook = new XSSFWorkbook(); 
ISheet sheet1 = workbook.CreateSheet("Project Time"); 

... Other numeric and textual cells fill in and work great 

row = sheet1.CreateRow(RowIndex++); 

var test = row.CreateCell(ColIndex++); 
test.SetCellType(CellType.Formula); 
test.SetCellFormula($"1 + 2 + 3 + 4 + 5 + 6"); // WORKS 
test.SetCellFormula($"SUM(1 + 2 + 3 + 4 + 5 + 6)"); // FAILS 
test.SetCellFormula($"SUM(E1:E6)"); // FAILS 
test.SetCellFormula($"E1 + E2 + E3"); // FAILS 

XSSFFormulaEvaluator.EvaluateAllFormulaCells(workbook); 

workbook.Write(TheStream); 

L'emplacement GitHub is here.

+0

voir ce lien https://stackoverflow.com/questions/25077009/npoi-setcellformula-custom-formula-in-vba. Supprimez $ de SetCellFormula ($ "SUM (E1: E6)"); –

+0

@kumarchandraketu le '$' est un préfixe pour la mise en forme de chaîne C# et n'a aucun effet sur ce dernier. Je l'ai sorti et j'ai obtenu le même résultat. Le lien vers la documentation du lien SO que vous mentionnez ne montre pas non plus ce que je suis en train de faire et n'a vraiment donné aucune idée de ce qui me manquait ou mal. – Grandizer

+0

Je vais vous suggérer d'essayer SetCellFormula ("= SUM (E1: E6)"); ou SetCellFormula ($ "= SUM (E1: E6)"); Parfois la syntaxe de la documentation ne fonctionne pas dans NPOI donc vous devrez peut-être essayer votre solution de contournement par hasard ou par hasard :) –

Répondre

1

Après un poste à here j'ai découvert qu'il y avait une mise à jour 1.0.1 et 1.0.0 qui a permis à la formule! Je n'ai pas vérifié les mises à jour vu que j'ai téléchargé le paquet hier. Mais c'est sur moi, c'est noyau .Net et donc se déplace assez rapidement.