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