par
ps6c0tic » 26 juil. 2013, 17:57
Salut la compagnie, voilà je génère un fichier excel avec phpexcel, alors quand je l'enregistre sur un dossier depuis la fonction, ça marche nikel, mais quand je veux qu'il s'ouvre sur le navigateur, le fichier se télécharge et on me dit qu'il est endommagé :s. Est-ce un problème au niveau des entêtes de phpexcel ? Je ne vois pas vraiment comment remédier a ce problème, sachant que moi je veux l'afficher sur le navigateur
<?php
function excel_php(){
include('database_connexion.php');
include('PHPExcel/Classes/PHPExcel.php');
include('PHPExcel/Classes/PHPExcel/Writer/Excel2007.php');
$workbook = new PHPExcel;
$sheet = $workbook->getActiveSheet();
$query = $bdd->query("SELECT * FROM conges");
$nbre=$query->ColumnCount();
for($i=0;$i<$nbre;$i++){
$j=$i;
$sheet->getStyleByColumnAndRow($j++,1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getColumnDimensionByColumn($i)->setWidth(20);
}
for($i=0;$i<=6;$i++){
$styleA = $sheet->getStyleByColumnAndRow($i,1);
$styleA->applyFromArray(array(
'font'=>array(
'bold'=>true,
'size'=>12,
'color'=>array(
'rgb'=>'FF00FF00')),
'fill'=>array(
'type'=>PHPExcel_Style_Fill::FILL_SOLID,
'color'=>array(
'argb'=>'FFCC99')),
'borders'=>array(
'allborders' => array(
'style' => PHPExcel_Style_Border::BORDER_DOUBLE,
'color' => array(
'rgb' => '808080'
)
))));
}
$sheet->setCellValueByColumnAndRow(0,1,'Matricule' );
$sheet->setCellValueByColumnAndRow(1,1,'Collaborateur' );
$sheet->setCellValueByColumnAndRow(2,1,'BU' );
$sheet->setCellValueByColumnAndRow(3,1,'Date de Sortie' );
$sheet->setCellValueByColumnAndRow(4,1,'Date de Retour' );
$sheet->setCellValueByColumnAndRow(5,1,'Nombre de Jour' );
$sheet->setCellValueByColumnAndRow(6,1,'Type de Congé' );
$ligne = 2;
while($data = $query->fetch()){
$colonne=0;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['matricule_co']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nom_co']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$req1=$bdd->query("SELECT * FROM collaborateurs WHERE matricule='" . $data['matricule_co'] . "'");
$collaborateur=$req1->fetch();$req1->closeCursor();
$req1=$bdd->query("SELECT * FROM bu WHERE code_bu='" . $collaborateur['code_bu'] . "'");
$bu=$req1->fetch();$req1->closeCursor();
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $bu['nom_bu']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['date_depart']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['date_retour']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nbre_jour']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$req1=$bdd->query("SELECT * FROM type_conge WHERE id='" . $data['type_conge'] . "'");
$conge=$req1->fetch();$req1->closeCursor();
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $conge['libelle']); $sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));
//Ligne à partir de 0; Colonne de 1; Donnée
$ligne++;}
$writer = new PHPExcel_Writer_Excel2007($workbook);
$writer->setOffice2003Compatibility(true);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition:inline;filename=Liste_conge.xlsx ');
$writer->save('php://output');
}
?>
Salut la compagnie, voilà je génère un fichier excel avec phpexcel, alors quand je l'enregistre sur un dossier depuis la fonction, ça marche nikel, mais quand je veux qu'il s'ouvre sur le navigateur, le fichier se télécharge et on me dit qu'il est endommagé :s. Est-ce un problème au niveau des entêtes de phpexcel ? Je ne vois pas vraiment comment remédier a ce problème, sachant que moi je veux l'afficher sur le navigateur
[php]
<?php
function excel_php(){
include('database_connexion.php');
include('PHPExcel/Classes/PHPExcel.php');
include('PHPExcel/Classes/PHPExcel/Writer/Excel2007.php');
$workbook = new PHPExcel;
$sheet = $workbook->getActiveSheet();
$query = $bdd->query("SELECT * FROM conges");
$nbre=$query->ColumnCount();
for($i=0;$i<$nbre;$i++){
$j=$i;
$sheet->getStyleByColumnAndRow($j++,1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getColumnDimensionByColumn($i)->setWidth(20);
}
for($i=0;$i<=6;$i++){
$styleA = $sheet->getStyleByColumnAndRow($i,1);
$styleA->applyFromArray(array(
'font'=>array(
'bold'=>true,
'size'=>12,
'color'=>array(
'rgb'=>'FF00FF00')),
'fill'=>array(
'type'=>PHPExcel_Style_Fill::FILL_SOLID,
'color'=>array(
'argb'=>'FFCC99')),
'borders'=>array(
'allborders' => array(
'style' => PHPExcel_Style_Border::BORDER_DOUBLE,
'color' => array(
'rgb' => '808080'
)
))));
}
$sheet->setCellValueByColumnAndRow(0,1,'Matricule' );
$sheet->setCellValueByColumnAndRow(1,1,'Collaborateur' );
$sheet->setCellValueByColumnAndRow(2,1,'BU' );
$sheet->setCellValueByColumnAndRow(3,1,'Date de Sortie' );
$sheet->setCellValueByColumnAndRow(4,1,'Date de Retour' );
$sheet->setCellValueByColumnAndRow(5,1,'Nombre de Jour' );
$sheet->setCellValueByColumnAndRow(6,1,'Type de Congé' );
$ligne = 2;
while($data = $query->fetch()){
$colonne=0;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['matricule_co']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nom_co']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$req1=$bdd->query("SELECT * FROM collaborateurs WHERE matricule='" . $data['matricule_co'] . "'");
$collaborateur=$req1->fetch();$req1->closeCursor();
$req1=$bdd->query("SELECT * FROM bu WHERE code_bu='" . $collaborateur['code_bu'] . "'");
$bu=$req1->fetch();$req1->closeCursor();
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $bu['nom_bu']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['date_depart']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['date_retour']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nbre_jour']);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));$colonne++;
$req1=$bdd->query("SELECT * FROM type_conge WHERE id='" . $data['type_conge'] . "'");
$conge=$req1->fetch();$req1->closeCursor();
$sheet->setCellValueByColumnAndRow($colonne, $ligne, $conge['libelle']); $sheet->getStyleByColumnAndRow($colonne,$ligne)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$sheet->getStyleByColumnAndRow($colonne,$ligne)->getBorders()->applyFromArray(array('allborders' => array('style' => PHPExcel_Style_Border::BORDER_MEDIUM,'color' => array('rgb' => '808080'))));
//Ligne à partir de 0; Colonne de 1; Donnée
$ligne++;}
$writer = new PHPExcel_Writer_Excel2007($workbook);
$writer->setOffice2003Compatibility(true);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition:inline;filename=Liste_conge.xlsx ');
$writer->save('php://output');
}
?>
[/php]