Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/10/2011, 17h00   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 68
Points : 13
Points : 13
Par défaut [PHPExcel] download fichier après chargement des données

Bonjour,

J'ai le problème suivant:
Dans le cas ci-dessous, un nouveau fichier Excel "chartData.xls" est créé et proposé au download à l'utilisateur.
Code :
1
2
3
4
5
 
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=chartData.xls");
Donc ici, pas de problème.

J'ai essayé une autre solution pour prendre en compte mon template:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
include './lib/PHPExcel.php';
	
// Load template and insert data
$objet = new PHPExcel_Reader_Excel5();

// Open template
$excel = $objet->load('./excel_templates/template_'.$seriesType.'.xls');
$sheet = $excel->getSheet(0);
	
$i = 0;
foreach ($data as $value){    		    		
	$sheet->setCellValueByColumnAndRow(0, $i+2, $value['name']);
	$sheet->setCellValueByColumnAndRow(1, $i+2, $value['value']);
	$sheet->setCellValueByColumnAndRow(2, $i+2, $value['category']);
	$i++;
}
	
$writer = new PHPExcel_Writer_Excel5($excel);
$writer->save('./excel_templates/'.$seriesType.'Chart.xls'); // ??? 
Le template est bien copié et rempli, mais le problème que je rencontre ici, est que contrairement au premier exemple, le fichier n'est plus proposé au téléchargement...

Comment lancer le téléchargement de mon fichier après remplissage au lieu de le sauvegarder sur le serveur

J'ai beau retourner le forum et la doc dans tous les sens, aucune piste.

Une idée?
Merci d'avance.
seurjer
seurjer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 10h37   #2
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
salut,

Code :
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
include './lib/PHPExcel.php';
 
// Load template and insert data
$objet = new PHPExcel_Reader_Excel5();
 
// Open template
$excel = $objet->load('./excel_templates/template_'.$seriesType.'.xls');
$sheet = $excel->getSheet(0);
 
$i = 0;
foreach ($data as $value){    		    		
	$sheet->setCellValueByColumnAndRow(0, $i+2, $value['name']);
	$sheet->setCellValueByColumnAndRow(1, $i+2, $value['value']);
	$sheet->setCellValueByColumnAndRow(2, $i+2, $value['category']);
	$i++;
}
 
$writer = new PHPExcel_Writer_Excel5($excel);
//Ici tu copies dans un fichier
//$writer->save('./excel_templates/'.$seriesType.'Chart.xls'); 
 
//ici tu envoie dans le navigateur
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=chartData.xls");
 
$writer->save('php://output');
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 10h53   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 68
Points : 13
Points : 13
Hello,

J'ai essayé le code que tu as proposé, mais j'ai une autre bizzarerie qui apparaît.

1. Si je fais le fameux save sur le serveur comme le code ci-dessous, le fichier Excel est créé sur le serveur avec les bonne données.

2. Si je mets le code que tu as proposé, le fichier Excel est bien proposé au download, mais il est rempli avec du code PHP. Je ne sais plus quoi faire...

Code :
1
2
3
4
5
6
7
8
9
10
11
$writer = new PHPExcel_Writer_Excel5($excel);
$writer->save('./'.$seriesType.'Chart.xls');	
 
//ici tu envoie dans le navigateur
/*header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=chartData.xls");
 
$writer->save('php://output');*/
seurjer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 13h12   #4
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
tu peux tester ceci ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$writer = new PHPExcel_Writer_Excel5($excel);
//Ici tu copies dans un fichier
$writer->save('./excel_templates/'.$seriesType.'Chart.xls'); 
 
//ici tu envoie dans le navigateur
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=chartData.xls");
 
//$writer->save( 'php://output' );
readfile( './excel_templates/'.$seriesType.'Chart.xls' );
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2011, 13h43   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2006
Messages : 68
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 68
Points : 13
Points : 13
Voici les résultats que j'obtiens:

1.
Code :
1
2
3
4
5
6
7
8
9
10
11
 
$writer = new PHPExcel_Writer_Excel5($excel);
$writer->save('./Chart.xls');	
 
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=Chart.xls");
 
//$writer->save('php://output');
readfile( './Chart.xls' );
RESULTAT DANS LE FICHIER
<?
require("connection.php");

// Parameters management
$defaultyearCurrent=queryyear(getquerydate()) - 1;
$defaultyearOld=queryyear(getquerydate()) - 10;
$date=currentQueryDate();
...(contenu du premier INCLUDE de ma page)


2. le fichier est correct, mais il se save sur le serveur sans que l'utilisateur puisse le télécharger
Code :
1
2
3
4
5
 
$writer = new PHPExcel_Writer_Excel5($excel);
$writer->save('./Chart.xls');	
 
readfile( './Chart.xls' );
RESULTAT DANS LE FICHIER
Name Value Category
2002 225 2002
2003 250 2003
2004 200 2004
2005 261 2005
2006 230 2006
2007 220 2007
2008 270 2008
2009 275 2009
seurjer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h13.


 
 
 
 
Partenaires

Hébergement Web