Cette section est close pour le moment.
Mais je n'arrête pas la veille, loin de là. Retrouvez mes projets sur Github et sur cette page qui sera à jour plus régulierement


Ressources

Définition de ressource : (nom féminin) Qui peut fournir ce dont on a besoin.
Vous l'aurez compris, sur cette page ce ne sont pas vraiment des tutoriels, c'est plutôt des penses-bêtes plus ou moins fournis mais qui vous permettront d'avoir des bases concernant la programmation.
Recherche par tag

Créer des fichiers xls complets avec la classe phpexcel

Créer des fichiers xls complets avec la classe phpexcel
Publication : Le 29/10/2012 à 01:06:32

Introduction

La classe phpexcel permet de créer des fichiers au format xls qui contiendra des formules de calcul, une mise en page personnalisée et une gestion de plusieurs feuilles dans un document.

Phpexcel permet de travailler sur différents formats (excel 5, csv, html, pdf) mais tout au long de l'exemple nous allons nous concentrer sur Excel 2007 compatible 2003.

Téléchargement et inclusion du script

Après avoir téléchargé le script, vous n'avez plus qu'à inclure les fichiers suivants dans votre code.

- PHPExcel.php pour les fonctions générales.
- Excel2007.php pour la création du document au format xls.
<?php
include ('PHPExcel.php');
include ('PHPExcel/Writer/Excel2007.php');
?>
Une fois les fichiers incluent, vous n'avez plus qu'à créer un objet du type PHPExcel.

Ensuite, que la génération du document commence !
<?php
$classeur = new PHPExcel;
?>

Gestion des feuilles

Voici un tour d'horizon des fonctions de base de la gestion des feuilles.

Pour créer une la feuille active :
<?php
$feuille = $classeur->getActiveSheet();
?>
Pour orienter une feuille on utilise setOrientation() avec comme valeur PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE ou PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT.
<?php
$feuille->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
?>
Donner un nom à une feuille de calcul :
<?php
$feuille->setTitle('Mon fichier excel');
?>
Pour choisir la taille des cellules il faut passer par les fonctions suivantes :

- getColumnDimension($col)->setWidth($width);
- getRowDimension($row)->setRowHeight($height);
<?php
$feuille->getColumnDimension("A")->setWidth(15);
$feuille->getRowDimension(1)->setRowHeight(40);
?>
Pour créer une nouvelle feuille.
<?php
$feuille2 = $classeur->createSheet();
?>

Gestion des cellules

Une fois le document structuré, passons à l'écriture des cellules.

Pour cela on a deux méthodes :

- $feuille->setCellValue($cell, $value);
- $feuille->setCellValueByColumnAndRow($col, $row, $value);

La différence, c'est que dans setCellValue on écrit la coordonnée de la cellule sous la forme "A1" alors que dans l'autre fonction la coordonnée s'écrit sous la forme $col = 0 (pour A) et $row = 1 (pour la première ligne).
<?php
$feuille->setCellValue("A1", "La cellule A1");
$feuille->setCellValueByColumnAndRow(0, 2, "La cellule A2");
?>
Et pour les formules ? Il suffit de l'écrire directement dans le paramètre $value des fonctions précédentes :
<?php
$feuille->setCellValue("B1", 10);
$feuille->setCellValue("B2", 21);
$feuille->setCellValue("B3", 32);

$feuille->setCellValue("B4", "=SUM(B1:B3)");
?>
Pour les autres fonctions, c'est pareil, vous pouvez même utiliser les $ pour figer une cellule.

Mise en page de votre document

Nous allons voir quelques fonctions quant au formatage d'une cellule, pour plus de précisions rendez-vous sur le tutoriel de Gérard Ernaelsten (lien à droite).

Pour cela il faut utiliser des tableaux PHP. Le tableau aura comme indice une donnée bien précise (pour que les paramètres soient bien pris en compte) et qui contiendra un... tableau.

Nous allons voir les tableaux :
- font
- alignement
- fill
- numberformat

Pour le tableau "font", il faudra des cellules identifiées par bold / size / name / color / etc...

Attention, dès que vous aurez à définir une couleur, il faudra la stocker dans un tableau (oui, encore, ça en fait beaucoup...)
<?php

$style_font_b_arial_12_black = array('font' => array(
        'bold' => true,
        'size' => 12,
        'name' => "Arial",
        'color' => array(
            'rgb' => '00000000'
        )
    )
);
?>
Aligner des informations dans une cellule, que ça soit horizontalement ou verticalement.
<?php
$style_aligment_h_center_v_center = array('alignment' => array(
        'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
        'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
    )
);
?>
Pour remplir une cellule, on charge le type de remplissage et la couleur de fond.
<?php
$style_fill_grey = array('fill' => array(
        'type' => PHPExcel_Style_Fill::FILL_SOLID,
        'color' => array(
            'argb' => 'CCCCCC'
        )
    )
);
?>
Et pour choisir le formatage d'une cellule :
<?php
$style_code_decimal_2 = array('numberformat' => array(
        'code' => PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00
    )
);
?>
(Dans le script phpexcel, vous trouverez toutes les informations utiles à la personnalisation).

Une fois définie, vous pouvez appliquer les styles avec la fonction suivante en passant le tableau voulu en paramètre :
<?php
$feuille->getStyle('A1')->applyFromArray($ex_style_font);
$feuille->getStyle('A1')->applyFromArray($ex_style_fille);
?>

Enregistrer le document

Pour sauvegarder le document, vous n'avez plus qu'à utiliser la classe d'écriture du document au format Excel2007.

Afin d'assurer la compatibilité du document dans un format excel2003 on utilise la fonction dédiée à cet effet.
<?php
$writer = new PHPExcel_Writer_Excel2007($classeur);
$writer->setOffice2003Compatibility(true);
$writer->save("fichier.xlsx");
?>

Conclusion

Sortir un fichier xls depuis du php est grâce à phpexcel quelque chose de très aisé. À vous les stats sur vos commandes qui s'exporteront facilement !

Une dernière fois, je rappelle que cette ressource n'est qu'un très bref aperçu de ce que peut permettre cette classe, allez voir le site officiel et le tutoriel de developpez.com pour plus d'infos.

Sur le même thème

Créer des fichiers xls complets avec la classe phpexcel
Publication : Le 29/10/2012 à 01:06:32

Tags

Tags : tutoriel / PHP / tools

Suggestion :

Création d'un bookmarklet simple

Création d'un bookmarklet simple