2010-09-19 21 views
1

J'ai un document .xlsx dans lequel j'ai besoin d'importer des valeurs dans des cellules avec des noms définis. Peu de ces cellules sont formatées comme monnaie et les valeurs que je l'importation dans ces cellules sont decimal de type que j'importer de cette manière:Problèmes de calcul Excel

cell.CellValue = new CellValue(value.ToString().Replace(",", ".")); 

Dans la même feuille de calcul, il y a quelques cellules qui ont une formule dans laquelle les cellules de devise que j'ai importées sont utilisées (par exemple, j'importe la valeur dans la cellule H27 avec le nom défini Total, et dans le champ I27 il y a une formule =Total*0.23). Une fois l'importation terminée, les valeurs sont correctement importées (et correctement formatées en devise), mais les cellules de formule ne sont pas calculées correctement tant que je ne clique pas sur les formules pour chaque cellule de formule ou que je change la valeur monétaire (dans ce cas , toutes les formules contenant cette cellule sont rafraîchies).

Que dois-je faire pour que les cellules contenant des formules calculent automatiquement les valeurs une fois l'importation terminée?

Répondre

1

Je l'ai compris. Les cellules avec formule ont <CellFormula> champs à l'intérieur d'eux. Ces champs ont bool l'attribut CalculateCell qui, s'il est défini sur true, indique à Excel de calculer la formule après l'ouverture du fichier. Puisque je ne sais pas à l'avance quelles cellules de formule sont affectées par les cellules, je les gère comme suit:

foreach (var cell in sheetData.Descendants<CellFormula>()) 
     cell.CalculateCell = true;