03déc. 2012

Infragistics : XamDataGrid et export Excel

J'utilise actuellement la librairie graphique Infragistics 11.1. La raison du choix a été la puissance du composant XamDataGrid qui permet de manipuler de gros volumes de données à la manière d'Excel.

Sur l'utilisation du composant, aucun problème. Par contre la sortie Excel est capricieuse.

Entre limitation sur la sortie Excel 2003

En effet, elle ne gère pas la limite des 65000 lignes sous Excel 2003. Comprendre, la classe chargée d'exporter sous Excel jette une exception lorsque vous tentez d'exporter plus de lignes qu'une feuille de calcul Excel ne peut en contenir.

Je pense qu'il aurait été opportun de gérer un système de pagination.

Et subtilité sur la sortie Excel 2007

En outre, une petite subtilité se glisse pour la génération de fichier Excel au format 2007. Pour rappel la limite des 65000 lignes est dépassable sous Excel 2007.

L'export Excel d'un XamDataGrid se fait à partir d'un objet DataPresenterExcelExporter. Ce fichier prends en paramètres un DataPresenter et éventuellement un objet de type Workbook ou un nom de fichier.

L'objet Workbook permet de manipuler le contenu du fichier Excel. Il est possible de lui donner un format (Excel2003/2007), d'ajouter des feuilles de calculs etc ... .

Si le format de sortie Excel2003 est défini dans un objet Workbook, l'exportation sera limitée à 65000 lignes. Pour profiter du débridage du nombre de lignes il faut laisser l'ExcelExporter créer le Workbook. On utilisera donc :

exporter.ExportAsync(this.xamDataPresenter1, "xamDataPresenter1.xlsx", 
    WorkbookFormat.Excel2007);

Modifier le fichier généré

Pour personnaliser votre fichier - ajouter une feuille de calcul par exemple - il faut s'abonner sur l'évènement ExportEnded de l'ExcelExporter.

Vous récupérez alors par l'intermédiaire de l'eventArg, un référence vers l'objet Workbook créé par l'ExcelExporter.

Ressources