tlbExcelView
76782 vues 0 commentaire
Yii, CGridView, export, Excel, PHPExcel, RTL
Qu’est-ce que c’est ?
Un widget Yii pour exporter les grilles CGridView sous Excel en utilisant la bibliothèque PHPExcel, avec formatage automatique (en-tête, feuille, pied de page, nombres) et somme automatique.
Téléchargement
Le projet est déposé sur Github.
Téléchargez la dernière version de tlbExcelView
Fonctionnalités
Le widget étend CGridView et lui ajoute la capacité d’export vers Excel avec les fonctionnalités suivantes :
- Formatage automatique de l’en-tête, du corps du tableau, et du pied de tableau,
- Formatage automatique des nombres,
- Totaux automatiques en bas de tableau,
- Mise en forme automatique de la feuille Excel, avec en-tête et pied de page, zone d'impression automatique…
- Nouveau dans la version 1.1 : Support des feuilles avec direction de droite à gauche.
- Nouveau dans la version 1.2 : Paramètre supplémentaire pour spécifier le zoom désiré dans la feuille Excel, une contribution de acorncom.
Pré-requis
Le widget tlbExcelView a été testé avec :
- Yii 1.1.10 à Yii 1.1.13
- PHPExcel 1.7.7
Installation
- Créer un dossier
phpexceldans le dossier/protected/extensions - Télécharger PHPExcel à partir de http://phpexcel.codeplex.com/
- Décompresser le dossier
Classesde l’archive de PHPExcel dans/protected/extensions/phpexcel - Copier le fichier
tlbExcelView.phpdans votre dossier de widgets, dans notre exemple ce sera/protected/components/widgets
Exemple d’utilisation
On exportera dans cet exemple la grille de la page Admin standard générée par Gii ou Giix.
Si vous utilisez un autre générateur de code de Yii, vous devrez bien entendu adapter si nécessaire.
Contrôleur
On modifie l’action standard admin comme suit :
Vue parente
On modifie la vue parente standard admin.php en remplaçant le widget CGridView par notre widget tlbExcelView et en ajoutant les options désirées, comme suit :
Vue partielle de recherche
Pour pouvoir exporter notre grille, on ajoute un bouton dans la vue partielle standard _search.php comme suit :
Options du widget
Vous trouverez ci-dessous les options spécifiques au widget tlbExcelView. Les options de base de CGridView ne sont pas listées ici.
| Option | Type | Valeur par défaut | Description |
|---|---|---|---|
| Déclaration du widget | |||
| libPath | string | "ext.phpexcel.↵ Classes.PHPExcel" | Spécifie l’emplacement de la bibliothèque PHPExcel |
| Propriétés du document | |||
| creator | string | "Nikola Kostadinov" | Spécifie le nom de l’auteur qui sera enregistré dans le classeur Excel |
| description | string | "" | Spécifie la description qui sera enregistrée dans le classeur Excel |
| keywords | string | "" | Spécifie les mots-clés qui seront enregistrés dans le classeur Excel |
| lastModifiedBy | string | "A. Bennouna" | Spécifie le nom du dernier modificateur qui sera enregistré dans le classeur Excel |
| legal | string | "PHPExcel generator http://phpexcel.↵ codeplex.com/ - EExcelView Yii extension http://yiiframework.com/↵ extension/eexcelview/ - Adaptation by A. Bennouna http://tellibus.com" | Spécifie les informations légales qui seront enregistrées dans le classeur Excel |
| sheetTitle | string | "" | Spécifie le nom de la feuille qui sera exportée dans le classeur Excel |
| subject | string | "Subject" | Spécifie l’objet qui sera enregistré dans le classeur Excel |
| title | string | "" | Spécifie le titre qui sera enregistré dans le classeur Excel |
| Configuration de l’export | |||
| disablePaging | boolean | true | Spécifie si la pagination éventuelle au niveau de la source de données ou de l’affichage de la grille :
|
| exportType | string | "Excel5" | Spécifie le type d’export :
|
| filename | string | NULL | Spécifie le nom du fichier à exporter, ou bien NULL pour utiliser la propriété title également comme nom de fichier |
| grid_mode | string | "grid" | Spécifie l’usage du widget :
|
| grid_mode_var | string | "grid_mode" | Spécifie le nom de la variable ajoutée au tableau $_GET dans le cas de l’affichage de la grille |
| stream | boolean | true | Spécifie si le classeur exporté doit être enregistré en arrière-plan ou bien renvoyé au navigateur qui le traitera comme un fichier à télécharger |
| Options de l’export | |||
| A4 | boolean | false | Spécifie le format d’impression et les dimensions de la feuille exportée :
|
| automaticSum | boolean | false | Spécifie si les colonnes du classeur exporté doivent être automatiquement sommées :
|
| autoWidth | boolean | true | Spécifie si les colonnes du classeur exporté doivent être automatiquement dimensionnées en largeur :
|
| bgColor | string | "FFFFFF" | Spécifie la couleur de fond (arrière-plan) qui sera utilisée pour toutes les cellules exportées. La valeur attendue est un code RGB hexadécimal. |
| border_style | string | PHPExcel_Style_Border::↵ BORDER_THIN ou "thin" | Spécifie le type de bordures qui sera utilisé pour toutes les cellules exportées. La valeur attendue est l’une des valeurs permises par PHPExcel. Veuillez vous référer à la documentation de PHPExcel. |
| borderColor | string | "000000" | Spécifie la couleur des bordures qui sera utilisée pour toutes les cellules exportées. La valeur attendue est un code RGB hexadécimal. |
| decimalSeparator | string | "." | Spécifie le caractère à utiliser comme séparateur décimal des nombres |
| displayZeros | boolean | false | Spécifie si le contenu des cellules numériques égales à zéro est :
|
| footerBgColor | string | "FFFFCC" | Spécifie la couleur de fond (arrière-plan) qui sera utilisée pour les cellules de la ligne de somme automatique si les totaux sont activés. La valeur attendue est un code RGB hexadécimal. |
| footerBorderColor | string | "000000" | Spécifie la couleur des bordures qui sera utilisée pour les cellules de la ligne de somme automatique si les totaux sont activés. La valeur attendue est un code RGB hexadécimal. |
| footerHeight | integer | 20 | Spécifie la hauteur en pixels qui sera utilisée pour la ligne de somme automatique si les totaux sont activés. |
| footerTextColor | string | "0000FF" | Spécifie la couleur de texte qui sera utilisée pour les cellules de la ligne de somme automatique si les totaux sont activés. La valeur attendue est un code RGB hexadécimal. |
| headerBgColor | string | "CCCCCC" | Spécifie la couleur de fond (arrière-plan) qui sera utilisée pour les cellules de la première ligne exportée, et contenant les noms des champs ou colonnes. La valeur attendue est un code RGB hexadécimal. |
| headerBorderColor | string | "000000" | Spécifie la couleur des bordures qui sera utilisée pour les cellules de la première ligne exportée, et contenant les noms des champs ou colonnes. La valeur attendue est un code RGB hexadécimal. |
| headerHeight | integer | 20 | Spécifie la hauteur en pixels qui sera utilisée pour la première ligne exportée, et contenant les noms des champs ou colonnes. |
| headerTextColor | string | "000000" | Spécifie la couleur de texte qui sera utilisée pour les cellules de la première ligne exportée, et contenant les noms des champs ou colonnes. La valeur attendue est un code RGB hexadécimal. |
| landscapeDisplay | boolean | false | Spécifie si la feuille exportée s’affiche :
|
| pageFooterText | string | "&RPage &P of &N" | Spécifie le contenu du pied de page de la feuille qui sera exportée dans le classeur Excel, où :
title) dans le pied de page, complètement à gauche. |
| rowHeight | integer | 15 | Spécifie la hauteur en pixels qui sera utilisée pour toutes les lignes exportées. |
| RTL A partir de la v1.1 | boolean | false | Spécifie si la feuille exportée s’affiche :
|
| sumLabel | string | "Totals" | Spécifie le texte à afficher dans la cellule qui précède la première colonne sommée dans le cas où la propriété automaticSum est active |
| textColor | string | "000000" | Spécifie la couleur de texte qui sera utilisée pour toutes les cellules exportées. La valeur attendue est un code RGB hexadécimal. |
| thousandsSeparator | string | "," | Spécifie le caractère à utiliser comme séparateur de milliers des nombres |
| zeroPlaceholder | string | "-" | Dans le cas où la valeur de la propriété displayZeros est false, spécifie la chaîne de caractères à afficher comme contenu des cellules dont la valeur est 0 |
| zoomScale A partir de la v1.2 | integer | 100 | Spécifie le zoom vers lequel la feuille sera exportée |
Crédits
Le projet est un fork du widget basique EExcelView.
