Mysql -> feuille excel: probleme création de feuille.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mysql -> feuille excel: probleme création de feuille.

Mysql -> feuille excel: probleme création de feuille.

par ironicman » 04 juin 2010, 23:42

Bonjour,
Je suis pour le moment en train de finaliser un site qui permettra à mes employés de créer des sondages, d'envoyer leur questionnaire à de futurs sondés et d'analyser les données enregistrées sous un fichier xlsx.
Je bloque cependant sur la création du fichier xlsx, celui-ci est créé, les données sont à leur place dans la feuille (elles viennent à l'origine d'une bd sql) mais je n'arrive pas à enregistrer le fichier à l'endroit désiré : C:\...\EASYPHP5.3.0\www\data\FILENAME.xlsx
mais plutot dans "Mes Documents".
De plus, lorsque un employé appuie sur un bouton "analyser" (bouton qui l'envoie vers une page php où toutes les données précédemment récoltées dans la base sql et transmises dans la feuille excel) je n'arrive pas à exécuter un téléchargement du fichier excel dans l'explorateur.

Voici le début du code de ma page analyse.php:
1e cas: Je veux enregistrer dans le root de l'ordinateur (EASYPHP5.3.0\www\...), code qui me facilitera la transposition du site vers un serveur.

Code : Tout sélectionner

<?php $idquestionnaire = $_POST['idquestionnairecup2']; //Initialisation d'un fichier excel // On définit une constante FILENAME comprenant le nom du fichier à générer et son emplacement. define("FILENAME","FILENAME.xlsx"); $file=$_SERVER['DOCUMENT_ROOT']."/data/FILENAME.xlsx"; // On vérifie que le fichier existe. if(file_exists(FILENAME)){ // Suppression du fichier précédemment créé s'il existe. unlink(FILENAME); } $excel=new COM("Excel.Application"); //Instanciation de l'objet COM $excel->sheetsinnewworkbook=1;//1 seule feuille de calcul 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 (comme son nom l'indique, feuille en anglais) $sheet->Name="sheetref";//Attribution d'un nom à la feuille
... et qui me génère cette erreur:

Code : Tout sélectionner

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Microsoft Office Excel<br/><b>Description:</b> Microsoft Office Excel ne peut accéder au fichier « C:\//Program%20Files/EasyPHP5.3.0/www/data/033CC000 ». Plusieurs raisons possibles : • Le nom du fichier ou le chemin n'existe pas. • Ce fichier est actuellement utilisé par un autre programme. • Le classeur que vous essayez d'enregistrer porte le même nom qu'un classeur actuellement ouvert.' in C:\Program Files\EasyPHP5.3.0\www\analyse.php:172 Stack trace: #0 C:\Program Files\EasyPHP5.3.0\www\analyse.php(172): variant->saveas('C:/Program File...') #1 {main} thrown in C:\Program Files\EasyPHP5.3.0\www\analyse.php on line 172
Et le 2e cas: Ce code m'enregistre le fichier dans "Mes Documents" et je ne sais pas trop pour quoi. Remarquez que seule la ligne $file=... est modifiée.

Code : Tout sélectionner

<?php $idquestionnaire = $_POST['idquestionnairecup2']; //Initialisation d'un fichier excel // On définit une constante FILENAME comprenant le nom du fichier à générer et son emplacement. define("FILENAME","FILENAME.xlsx"); $file="FILENAME.xlsx"; // On vérifie que le fichier existe. if(file_exists(FILENAME)){ // Suppression du fichier précédemment créé s'il existe. unlink(FILENAME); } $excel=new COM("Excel.Application"); //Instanciation de l'objet COM $excel->sheetsinnewworkbook=1;//1 seule feuille de calcul 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 (comme son nom l'indique, feuille en anglais) $sheet->Name="sheetref";//Attribution d'un nom à la feuille
Voici la fin du code qui permet de clôturer l'enregistrement et devrait pour bien faire lancer le téléchargement:

Code : Tout sélectionner

$book->saveas($file);//Sauvegarde du fichier 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'instance $excel //Close database mysql_close($link); //header("Location: FILENAME".".xlsx"); ?>


Merci d'avance et bon courage :zoubi: