PHPExcel

PHPExcel

Lecture ecriture de fichiers Excel en PHP

<?php 
require_once($_SERVER[DOCUMENT_ROOT]."/monchemin/class/PHPExcel.php");
require_once($_SERVER[DOCUMENT_ROOT]."/monchemin/class/PHPExcel/IOFactory.php");
$modele  = $_SERVER[DOCUMENT_ROOT]."/monchemin//modele/excel_modele.xls";
$excelReader = PHPExcel_IOFactory::load($modele); //charge le fichier excel
$excelReader->setActiveSheetIndex(1);   // sélection deuxième onglet (1) facultatif

$excelReader->getActiveSheet()->SetCellValue("C2", "test");   // Mets "test" dans la cellule C2

// acces aux cellule en numérique pratique pour des boucles
$excelReader->getActiveSheet()->setCellValueByColumnAndRow(1, 3, "test");   // Mets "test" dans la cellule B3

// mets une date MySQL dans la cellule C4
$bidon=faire_date($row["DATE"],$excelReader, "C4" );

// force le format texte pour afficher par exemple un code barre
$excelReader->getActiveSheet()->setCellValueExplicit("F5", $row[GENCOD], PHPExcel_Cell_DataType::TYPE_STRING);

// envoi le fichier excel au navigateur
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment;filename=mon_nouveau_fichier.xls");
header("Cache-Control: max-age=0");
$objWriter = PHPExcel_IOFactory::createWriter($excelReader, "Excel5");
  
$objWriter->save("php://output");

// ou pour sauver dans un fichier sur le disque (sans les header)
$objWriter->save("monfichier.xls");


function faire_date($dt,&$excelReader, $cel ){
	$date1 = explode("-",$dt);
	$time1 = PHPExcel_Shared_Date::FormattedPHPToExcel($date1[0], $date1[1], $date1[2]);
	$excelReader->getActiveSheet()->getStyle($cel)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY);
	$excelReader->getActiveSheet()->SetCellValue($cel, $time1); 
}
?>

Microsoft excel affiche parfois des messages concernant l’intégrité ou la sécurité des fichiers produits. Préparer les modèles avec Libreoffice évite ce problème

quelques liens

exemples de code

     

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

forty one − = thirty five