J'utilise PHPEXxcel pour exporter une table HTML générée à l'aide de MYSQL et ainsi de suite.
<?php $query = "SELECT `Firstname`,`Lastname`,`Branch`,`Gender`,`Mobileno`, `Email`
FROM `student_details` WHERE Branch IN ('$branch') and `Year`='$year'
and Tenthresult > '$tenth' and
Twelthresult > '$twelth' and (CGPA > '$cgpa' || CGPA = '$cgpa')";
$result = mysql_query($query);
confirm_query($result);
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$rowCount = 1;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount,'Firstname');
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount,'Lastname');
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount,'Branch');
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount,'Gender');
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount,'Mobileno');
$objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowCount,'Email');
while($row = mysql_fetch_array($result)){
$rowCount++;
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['0']);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['1']);
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, $row['2']);
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount, $row['3']);
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount, $row['4']);
$objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowCount, $row['5']);
}
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('some_Excel_file.xlsx');
?>
Cela fonctionne mais il enregistre le fichier xlsx dans le dossier racine sans montrer à l’utilisateur le moindre signe qu’il est en cours de téléchargement . Ce code est rund lorsque je clique sur un bouton. et en montrant à l'utilisateur au début qu'il est en cours de téléchargement avec l'emplacement.
J'ai essayé d'utiliser
header('Content-Type: application/vnd.ms-Excel');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
Avec cela, je reçois ce que je voulais ci-dessus, mais le fichier xls téléchargé à l'ouverture montre le message ' .etc. Voulez-vous ouvrir maintenant?
Lors de son ouverture, il contient soit la page HTML complète, soit tout simplement sa page vierge ........ Quelqu'un peut-il m'aider ...?
Tableur 101
Il existe de nombreux formats de fichier de feuille de calcul différents, chacun avec ses propres extensions de nom de fichier et pouvant être envoyé à un navigateur Web à l'aide de différents types MIME. Celles-ci sont décrites dans la documentation PHPExcel et chacune a son propre Writer différent dans PHPExcel. Vous n'accordez pas deux formats différents
Format BIFF
Utilisé par Microsoft Excel entre les versions 95 et 2003 Fichier
extension: xls
PHPEXcel Writer: PHPExcel_Writer_Excel5
Type MIME: application/vnd.ms-Excel
Format OfficeOpenXML
Utilisé par Microsoft Excel depuis la version 2007
Extension de fichier: xlsx
PHPEXcel Writer: PHPExcel_Writer_Excel2007
Type Mime: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Ne mélangez pas et ne faites pas correspondre: si vous le faites, alors Excel se plaindra (et à juste titre). Si vous voulez un fichier BIFF, utilisez le fichier BIFF Writer (Excel5) de PHPExcel, une extension de fichier .xls et le type MIME indiqué ci-dessus pour le format BIFF. Si vous souhaitez un fichier OfficeOpenXML, utilisez alors Excel2007 Writer de PHPExcel, une extension de fichier de type .xlsx et le type MIME indiqué ci-dessus pour OfficeOpenXML.
MODIFIER
Notez que les exemples fournis avec la distribution PHPExcel incluent 01simple-download-xls.php et 01simple-download-xlsx.php pour montrer exactement ce que vous voulez.
Le simple fait d'ajouter ces en-têtes n'envoie que ces en-têtes. Le reste de votre code est toujours identique, vous enregistrez donc vos xls dans votre dossier racine comme auparavant.
Envoi des en-têtes uniquement, la page que vous verriez normalement sera envoyée avec des en-têtes xls. Quelque chose qui n'est pas ce que vous voulez, et vous obtenez votre page HTML mais avec les mauvais en-têtes.
Ce que vous devez faire, c'est envoyer ces en-têtes puis diffuser le fichier xlsx.
En regardant un fil de discussion aléatoire (je sais, mauvaise idée, mais cela vous donnera une longueur d'avance sur ce qu'il faut faire) ici , vous pouvez trouver des exemples comme celui-ci:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=$filename.xls");
header("Content-Transfer-Encoding: binary ");
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->setOffice2003Compatibility(true);
$objWriter->save('php://output');
Je le fais avec l'aide de l'extrait ci-dessous.
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="test_file.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
essaye ça ..
header('Content-Type: application/vnd.ms-Excel');
$filename = "Reports".date("d-m-Y-His").".xls";
header('Content-Disposition: attachment;filename='.$filename .' ');
header('Cache-Control: max-age=0');
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');