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 : 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
 
<?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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
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 : 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
 
<?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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$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