2009-05-27 6 views
2

Je fais une sortie excel côté serveur en utilisant le ctp OpenXML Sdk v2. Quelqu'un a-t-il déjà eu l'expérience de l'utilisation de ce - spécifiquement mpr:Ajouter des sous-totaux à des données dans une feuille de calcul

Existe-t-il un moyen d'ajouter des sous-totaux aux données dans une feuille de calcul en utilisant le SDK? ou ai-je besoin d'itérer manuellement sur les données en ajoutant la propriété OutlineLevel?

rows.Add(new Row(cells.ToArray()) { 
    RowIndex = (UInt32Value)Convert.ToUInt32(idx), 
    Spans = new ListValue<StringValue>() { InnerText = "1:2" }, 
    OutlineLevel = (ByteValue)groupLevelCount 
}); 

ce serait un vrai PITA si je dois le faire manuellement comme là, je dois faire le regroupement de plusieurs niveaux et le tri

Répondre

3

Avez-vous essayé d'utiliser le document DocumentReflector inclus dans le SDK? L'outil DocumentReflector peut charger un document OpenXML et effectuer une ingénierie inverse du code pour générer ce document avec le SDK. En d'autres termes, il génère du code C# à partir d'un fichier xlsx.

L'outil DocumentReflector se trouve dans le dossier Outils sous le dossier d'installation de Open XML Format SDK 2.0.

Peut-être que cela pourrait aider à résoudre votre problème.

+0

Il fait dans une certaine mesure - mais je traduis à partir d'un IList pour exceller - là où dans l'outil de réflecteur il utilise une méthode procédurale pour ajouter des lignes à la feuille de calcul - je dois parcourir la collection et espérais qu'il y avait une fonction que je pourrais appliquer à la feuille de calcul après que les données ont été ajoutées pour créer les sous-totaux pour moi. La seule façon que je peux voir pour faire ceci maintenant est d'itérer sur les données une fois qu'elles sont ajoutées, faites le manuall de regroupement et de sumarizing - qui est un PITA complet: s –

1

La réponse courte est non. Le SDK OpenXML vous donne un accès complet au fichier XLSX. Vous pouvez ajouter, supprimer et/ou modifier des éléments dans le classeur. Mais c'est tout ce que c'est - un accès de bas niveau aux éléments. Il n'a aucune sorte de fonctionnalité de traitement.

0

Si vous avez une macro ou une formule couvrant la gamme de cellules dans le classeur, vous pouvez le configurer à exécuter lorsque la feuille de calcul est ouverte:

Voir OpenXmlSdk: make Excel Recalculate formula.

spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true; 
spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; 
Questions connexes