OpenXML SDK: Créer une formule de recalcul Excel
- Je mettre à jour certaines cellules d'une feuille de calcul Excel par l'intermédiaire de Microsoft Office OpenXML SDK 2.0. La modification des valeurs rend toutes les cellules contenant la formule qui dépendent de cellules modifiées non valide. Toutefois, en raison de la mise en cache les valeurs Excel ne recalcule pas la formule, même si l'utilisateur clique sur "Calculer maintenant".
Quelle est la meilleure façon d'invalider toutes les cellules dépendantes de la totalité du classeur à travers le SDK? Jusqu'à présent, j'ai trouvé l'extrait de code suivant à http://cdonner.com/introduction-to-microsofts-open-xml-format-sdk-20-with-a-focus-on-excel-documents.htm:
public static void ClearAllValuesInSheet
(SpreadsheetDocument spreadSheet, string sheetName)
{
WorksheetPart worksheetPart =
GetWorksheetPartByName(spreadSheet, sheetName);
foreach (Row row in
worksheetPart.Worksheet.
GetFirstChild().Elements())
{
foreach (Cell cell in row.Elements())
{
if (cell.CellFormula != null &&
cell.CellValue != null)
{
cell.CellValue.Remove();
}
}
}
worksheetPart.Worksheet.Save();
}
Outre le fait que ce morceau de code ne compile pas pour moi, il a deux limites:
- Il ne invalide une seule feuille, bien que d'autres feuilles peut contenir dépendant de la formule
- Il ne prend pas en compte les dépendances.
Je suis à la recherche d'une manière qui est efficace (en particulier, seulement invalide les cellules qui dépendent d'une certaine valeur de la cellule), et prend toutes les feuilles en compte.
Mise à jour:
En attendant, j'ai réussi à faire le code compiler & exécuter, et de supprimer les valeurs en cache sur toutes les feuilles du classeur. (Voir les réponses.) Je suis intéressé dans de meilleures/les solutions de rechange, en particulier, comment faire pour supprimer uniquement en cache les valeurs des cellules qui dépend en fait de la mise à jour de cellule.
source d'informationauteur chiccodoro | 2010-04-19
Vous devez vous connecter pour publier un commentaire.
Fonctionne pour moi!
- Je utiliser ce
Ce vide le cache des valeurs
accueille
Depuis partiellement résout mon problème et il semble y avoir pas de meilleure solution jusqu'à présent, déplacé que codeblock de la question à une réponse... C'est comment le nouveau code ressemble à ceci:
Vous avez besoin d'enregistrer la feuille de calcul à la fin, Cela a fonctionné pour moi.