Le Lab du Web et du Mobile by tellibus

Le Lab by tellibus » tlbExcelView

8 mai 2013

tlbExcelView

75921 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 phpexcel dans le dossier /protected/extensions
  • Télécharger PHPExcel à partir de http://phpexcel.codeplex.com/
  • Décompresser le dossier Classes de l’archive de PHPExcel dans /protected/extensions/phpexcel
  • Copier le fichier tlbExcelView.php dans 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.

OptionTypeValeur par défautDescription
Déclaration du widget
libPathstring"ext.phpexcel.↵ Classes.PHPExcel"Spécifie l’emplacement de la bibliothèque PHPExcel
Propriétés du document
creatorstring"Nikola Kostadinov"Spécifie le nom de l’auteur qui sera enregistré dans le classeur Excel
descriptionstring""Spécifie la description qui sera enregistrée dans le classeur Excel
keywordsstring""Spécifie les mots-clés qui seront enregistrés dans le classeur Excel
lastModifiedBystring"A. Bennouna"Spécifie le nom du dernier modificateur qui sera enregistré dans le classeur Excel
legalstring"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
sheetTitlestring""Spécifie le nom de la feuille qui sera exportée dans le classeur Excel
subjectstring"Subject"Spécifie l’objet qui sera enregistré dans le classeur Excel
titlestring""Spécifie le titre qui sera enregistré dans le classeur Excel
Configuration de l’export
disablePagingbooleantrueSpécifie si la pagination éventuelle au niveau de la source de données ou de l’affichage de la grille :
  • true : est annulée pour l’export, c’est à dire que toutes les données sont exportées
  • false : est maintenue pour l’export, c’est à dire que seules les données de la page en cours d’affichage sont exportées
exportTypestring"Excel5"Spécifie le type d’export :
  • "Excel5" : format XLS
  • Autres valeurs : Usage expérimental
filenamestringNULLSpécifie le nom du fichier à exporter, ou bien NULL pour utiliser la propriété title également comme nom de fichier
grid_modestring"grid"Spécifie l’usage du widget :
  • "grid" : Affichage de la grille
  • "export" : Export de la grille
grid_mode_varstring"grid_mode"Spécifie le nom de la variable ajoutée au tableau $_GET dans le cas de l’affichage de la grille
streambooleantrueSpé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
A4booleanfalseSpécifie le format d’impression et les dimensions de la feuille exportée :
  • true : A4
  • false : Letter
automaticSumbooleanfalseSpécifie si les colonnes du classeur exporté doivent être automatiquement sommées :
  • true : le total de chaque colonne sera automatiquement calculé et placé dans la première ligne vide après les cellules exportées
  • false : les totaux des colonnes ne seront pas calculées
autoWidthbooleantrueSpécifie si les colonnes du classeur exporté doivent être automatiquement dimensionnées en largeur :
  • true : La largeur de chaque colonne sera automatiquement dimensionnée par rapport à la cellule la plus large
  • false : Les colonnes ne seront pas redimensionnées et garderont la valeur par défaut d’Excel
bgColorstring"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_stylestringPHPExcel_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.
borderColorstring"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.
decimalSeparatorstring"."Spécifie le caractère à utiliser comme séparateur décimal des nombres
displayZerosbooleanfalseSpécifie si le contenu des cellules numériques égales à zéro est :
  • true : affiché
  • false : la valeur de la propriété zeroPlaceholder est affichée en lieu et place
footerBgColorstring"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.
footerBorderColorstring"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.
footerHeightinteger20Spécifie la hauteur en pixels qui sera utilisée pour la ligne de somme automatique si les totaux sont activés.
footerTextColorstring"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.
headerBgColorstring"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.
headerBorderColorstring"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.
headerHeightinteger20Spécifie la hauteur en pixels qui sera utilisée pour la première ligne exportée, et contenant les noms des champs ou colonnes.
headerTextColorstring"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.
landscapeDisplaybooleanfalseSpécifie si la feuille exportée s’affiche :
  • true : en mode Paysage
  • false : en mode Portrait
pageFooterTextstring"&RPage &P of &N"Spécifie le contenu du pied de page de la feuille qui sera exportée dans le classeur Excel, où :
  • &R : placement du contenu à droite
  • &P : page en cours
  • &N : nombre total de pages
Remarque : le widget placera automatiquement le titre du fichier (spécifié par la propriété title) dans le pied de page, complètement à gauche.
rowHeightinteger15Spécifie la hauteur en pixels qui sera utilisée pour toutes les lignes exportées.
RTL
A partir de la v1.1
booleanfalseSpécifie si la feuille exportée s’affiche :
  • true : de droite à gauche
  • false : de gauche à droite
sumLabelstring"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
textColorstring"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.
thousandsSeparatorstring","Spécifie le caractère à utiliser comme séparateur de milliers des nombres
zeroPlaceholderstring"-"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
integer100Spécifie le zoom vers lequel la feuille sera exportée

Crédits

Le projet est un fork du widget basique EExcelView.