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 14/05/2008, 11h33   #1
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 0
Points : 0
Par défaut Export php -> excel

Bonjour,

A l'aide du tuto trouvé à cette page http://stephaneey.developpez.com/tutoriel/php/phpexcel/ , je tente de créer un fichier excel comportant un graphique.
Ce dernier marche, mais ne fait que s'enregistrer sur le disque dur. Est-il possible que lorsque l'on clique sur le lien pour exécuter le script, cela lance directement le fichier au lieu de l'enregistrer ?

Ensuite, j'éprouve quelques difficultés à "convertir" du code VBA (trouvé à l'aide des macros sous excel) en php !

Par exemple, j'aurai besoin de redéfinir les valeurs de l'axe des abscisses.
En VBA cela donne

Code :
1
2
ActiveChart.SeriesCollection(1).XValues = _
        "='Graphique effectifs par âge'!R1C1:R5C1"
sachant que j'ai sélectionné les cases de la colonne A ...


Merci de votre aide future!
bayer59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 05h23   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Je ne connais pas bien COM, mais voici une méthode qui fonctionne à tous les coups. Utilise les fonctions de gestion du flux de sortie :
Code :
1
2
3
ob_start(); //au début
...
$output = ob_get_clean(); //à la fin
Puis tu envoies les headers pour fichier Excel, la taille du fichier, bref tout ce qu'il faut pour envoyer le fichier, et tu termines par :
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 16h22   #3
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 0
Points : 0
Salut,

Tout d'abord merci pour ta réponse ! J'ai trouvé quelquechose de mon côté pour l'ouverture du fichier à l'aide de différents headers (bien que je n'ai fait que des copier/coller sans trouver de sites expliquant chacune de ses fonctionnalités).

Par contre, je n'arrive pas à virer le message demandant d'enregistrer qui s'ajoute à celui pour l'ouverture (généré par les headers). Même en enlevant la fonction $book->saveas(FILENAME);
bayer59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 16h47   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Est-ce que tu peux montrer un bout de code, si tu veux que je t'aide ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 10h43   #5
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 0
Points : 0
Bonjour,

Je te donne le code de mon fichier d'exportation

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
 
session_start();
 
/*Connexion à la base de données*/
require_once('../fonction_connexion.php');
connexion();
 
require_once ('../ed/fonction_ed.php');
 
define("FILENAME","test.xls");
$chemin = 'C:\Documents and Settings\thomeres\Mes documents\test.xls';
 
header('Content-Type: application/msexcel');
header("Content-Disposition: attachment; filename=\"test.xls\"");
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
readfile($chemin);
 
$variable=liste_age("age","nb_age");
$age=liste_age("age","liste_age");
 
//Si le fichier existe, le supprimer
//if(file_exists(FILENAME)){
//	unlink(FILENAME);
//}
$excel=new COM("Excel.application");//Instanciation de l'objet COM
$excel->sheetsinnewworkbook=1;//Une seule feuille dans le document
$excel->Workbooks->Add();//Ajout d'un classeur
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active
$sheet->Name="Graphique effectifs par âge";//Attribution d'un nom à la feuille
$cell=$sheet->Range('A1');
$cell->value="Âge";
$cell=$sheet->Range('B1');
$cell->value="Effectifs";
$i=2;
while($i <= count($variable)+1){//Parcours du résultat de la requête
	$cell=$sheet->Range('A'.$i);
	$cell->value=$age[$i-2];
	$cell=$sheet->Range('B'.$i);
	$cell->value=$variable[$i-2];
	$i++;
}
 
$i--;
$selection = $sheet->range("B2:B$i");//Sélection des cellules qui seront la source du graphique
$graph = $sheet->chartobjects->add(150, 10, 300, 250); //Ajout du graphique
$graphique = $graph->chart;//$graphique contient le graphique actif
$graphique->type=3;//le graphique est de type "Histogramme"
//$graphique->activate;//Activation du graphique
$graphique->setsourcedata($selection);//Définition de la source du graphique
//$graphique->ApplyDataLabels->type=5;//Afficher les valeurs
$graphique->HasTitle=true;
$graphique->ChartTitle->Text="Effectifs par âge";//Attribution d'un titre
//$book->saveas(FILENAME);//Enregistrement du document
unset($sheet);//Libération de $sheet
unset($book);//Libération de $book
$excel->Workbooks->Close();//Fermeture du classeur
$excel->Quit();//On quitte Excel
unset($excel);//Libération de l'objet $excel
?>
bayer59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 11h57   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
La ligne que tu cherches à supprimer est la suivante :
Pour info, voici un script permettant d'envoyer un document avec les bons headers :
http://php.developpez.com/faq/index...._forcedownload
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 14h32   #7
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 0
Points : 0
Merci pour ta réponse, mais le problème persiste.

J'ai un premier message (que je souhaiterai supprimer) me demandant ceci :
Citation:
Voulez-vous enregistrer les modifications apportées à 'Classeur1'?
Et un second m'invitant soit à ouvrir le fichier, soit à l'enregistrer.

Je pensais que cela tournait autour de la fonction saveas, mais comme je l'ai déjà mise en commentaire et que cela ne change rien, je ne sais pas trop où m'orienter.
bayer59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 14h41   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Comme je te l'ai dit, je ne connais pas COM :/
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 15h40   #9
Invité de passage
 
Inscription : mai 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 12
Points : 0
Points : 0
lol en tout cas merci ^^
bayer59 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 01h14.


 
 
 
 
Partenaires

Hébergement Web