nov
24
2011

PHPExcel : préserver les zéros en début de chaîne

Une petite astuce PHPExcel aujourd’hui : comment préserver les zéros en début de chaîne de caractères sous PHPExcel dans un texte ? Vous devez exporter un code type nombre ou un chiffre avec zéro initial tel que 000987 et vous souhaitez que les zéros ne soient pas effacés et que la cellule affiche 987 ? Il suffit de déclarer le type de données explicitement.

Valeur de cellule avec type explicite

// Déclare le type de données explicitement.
$objPHPExcel -> getActiveSheet() -> setCellValueExplicit('A1' , '000987', PHPExcel_Cell_DataType :: TYPE_STRING);
// Modifie le format de la cellule
$objPHPExcel -> getActiveSheet() -> getStyle('A1') -> getNumberFormat() -> setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);

Et le tour est joué. La cellule sera interprétée comme un format texte, et les zéros seront conservés. Les deux lignes sont importantes pour afficher correctement les zéros.

Les types de données suivants son supportés (voir la classe PHPExcel_Cell_DataType) :

  • TYPE_STRING
  • TYPE_FORMULA
  • TYPE_NUMERIC
  • TYPE_BOOL
  • TYPE_NULL
  • TYPE_INLINE
  • TYPE_ERROR

Mise à jour du style de la cellule

Il est également possible d’assigner un style particulier à la cellule contenant les zéros à préserver :

// Force l'affichage de la cellule sur 6 caractères.
$objPHPExcel -> getActiveSheet() -> setCellValue('A1', 000987);
$objPHPExcel -> getActiveSheet() -> getStyle('A1') -> getNumberFormat() -> setFormatCode('000000');

La cellule n’est pas explicitement déclarée comme étant du texte, mais son style permet de préserver les zéros. A vous de choisir la méthode qui vous convient le mieux !

Vous aimerez peut-être...

About the Author: Nicolas Hachet

Je suis Lead développeur PHP en SSII à Nantes. J'interviens sur les technologies PHP / MySQL sur les frameworks Symfony 2, CakePHP et Zend.

  • http://www.phpexcel.net Mark Baker

    Well done for mentioning both methods: string and style

Sondage

Quelle méthode de gestion de projets utilisez-vous lors de vos développements ?

View Results

Loading ... Loading ...

Twitter