Bonjour,

J'essaie en php de créer un ZIP content plusieurs fichiers xls à l'aide de PHPExcel. Je n'arrive pas bien à comprendre le mécanisme...
Voici mon code, qui permet de créer dans le premier cas un fichier zip contenant deux fichiers, Export.xls et Export-ono.xls avec une erreur lors de l'ouverture de ces fichiers, et ne contenant aucun texte ; dans le deuxième cas, en commentaire, il permet de créer un fichier Export.xls contenant cette fois le texte "Hello world" en C3.

Une idée ? Merci d'avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/********************** AVEC ZIP **********************/
$zip = new ZipArchive();
$directory_exports="libexports/";
$zipfilename = $directory_exports . 'Export.zip';
$res = $zip->open($zipfilename, ZipArchive::CREATE);
if ($res === TRUE) {			
	$objPHPExcel = new PHPExcel(PHPExcel_Settings::setZipClass(PHPExcel_Settings::ZIPARCHIVE));
 
	$objPHPExcel->setActiveSheetIndex(0);
	$as = $objPHPExcel->getActiveSheet();
	$as->setCellValueByColumnAndRow(2, 2, "Hello world" );
 
	$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
	$content = $zip->addFromString("Export.xls", $objWriter->save('php://output'));
 
	$objPHPExcel = new PHPExcel(PHPExcel_Settings::setZipClass(PHPExcel_Settings::ZIPARCHIVE));
	$content = $zip->addFromString("Export-Ono.xls", $objWriter->save('php://output'));
 
	$zip->close();	  
 
	header('Content-Type: application/octet-stream');
	header('Content-Disposition: attachment; filename="'.$zipfilename.'"'); 
	header('Content-Transfer-Encoding: binary');	
 
	echo file_get_contents($zipfilename);
	if ( unlink( $zipfilename) == false ) {
			return "<span style='color:red;'>Impossible de supprimer le fichize ZIP !</span>";
	} else {
			return "";
	}
} else {
	return "<span style='color:red;'>Impossible de cr&eaacute;er le fichier ZIP !</span>";
}
 
/********************** SANS ZIP **********************/
/* $objPHPExcel = new PHPExcel(PHPExcel_Settings::setZipClass(PHPExcel_Settings::ZIPARCHIVE));
 
$objPHPExcel->setActiveSheetIndex(0);
$as = $objPHPExcel->getActiveSheet();
$as->setCellValueByColumnAndRow(2, 2, "Hello world" );
 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
 
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Export.xls"');
header('Content-Disposition: attachment;filename="Export-FAMAR.xls"'); */