Cela fait plusieurs mois que je travaille avec les VSTO de Microsoft qui permettent de manipuler les outils Office en .NET. Je vais vous présenter aujourd’hui deux petites astuces sur la manipulation des tableaux croisés dynamiques (PivotTable) sous Excel qui vous seront utiles si un jour vous avez l’occasion de travailler avec les VSTO.
Commençons par la création d’un PivotTable attaquant une base Analysis Services 2008 :
1 2 3 4 5 6 7 8 9 10 11 | PivotCache pivotCache = pivotCaches.Create(XlPivotTableSourceType.xlExternal, Missing.Value, XlPivotTableVersionList.xlPivotTableVersion12); pivotCache.SavePassword = false; pivotCache.Connection = "OLEDB; Provider=MSOLAP.4;Persist Security Info=True;User ID={0};Password={1};Initial Catalog=AtHomeDecisionnel-760020529;Data Source=https://c0ding.fr/msmdpump.dll;Location=https://c0ding.fr/msmdpump.dll;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error"; pivotCache.CommandType = XlCmdType.xlCmdCube; pivotCache.CommandText = "CubeName"; pivotCache.MaintainConnection = true; pivotCache.RefreshOnFileOpen = true; PivotTable pivotTable = pivotCache.CreatePivotTable(Globals.ThisAddIn.Application.ActiveCell, Missing.Value, Missing.Value, Missing.Value); |
Comme vous pouvez le constater avant de créer un PivotTable, il est nécessaire de créer un PivotCache qui est l’objet qui est responsable de la connexion et du cache des données. Le squelette du PivotTable vide requiert un espace libre de 8 lignes sur 3 colonnes, mais vous pouvez forcer à utiliser un petit squelette de PivotTable avec la propriété pivotTable.SmallGrid qui nécessitera seulement 2×2.
À tout moment, vous pouvez détacher le PivotTable d’une connexion ce qui est très utile pour distribuer le classeur par la suite :
1 | pivotCache.WorkbookConnection.Delete(); |
À noter que pour retrouver le PivotCache d’un PivotTable, il suffit d’appeler la méthode pivotTable.PivotCache().
Voilà pour les petites astuces de la soirée, je vous conseille vivement de tester les VSTO.
PS. Je reprends une bonne fréquence d’articles dans 1 à 2 semaines, mon projet de stage se finalise.
