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 !

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

    Well done for mentioning both methods: string and style