salut les gens!

'oilou, ce coup ci, je veux mettre des données php sous excel et j'ai donc suivi le tuto (par ailleurs tres bon) suivant

http://stephaneey.developpez.com/tutoriel/php/phpexcel


sauf que pour moi ca me donne un message d'erreur :

Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown' in D:\wamp\www\mgp\httpdocs\mo.php:51 Stack trace: #0 D:\wamp\www\mgp\httpdocs\mo.php(51): variant->Range('IW1') #1 {main} thrown in D:\wamp\www\mgp\httpdocs\mo.php on line 51



alors que mon code est la copie conforme du tuto, mise a part la requete sql et le nom de la base !!!





voici mon code donc :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php 
session_start();
define("FILENAME","D:\mgftftftfftftp\httftftftftfpdocs\essaiexcel.xls"); //constante: nom du fichier à générer
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="fr" />
<?php
mysql_connect("localftfthost","rooftftt","");
mysql_select_db('mgdftgp');
 
		?>
<?php
 
  $_SESSION['req']='SELECT DATE_APPEL,NOM_CLIENT,XID_CLIENT  FROM APPELS_CLIENTS INNER JOIN CLIENTS ON ID_CLIENT=XID_CLIENT ORDER BY XID_CLIENT,DATE_APPEL';
$_SESSION['req']="SELECT c.contact, c.id as XID_CLIENT, c.adresse, c.code_postal, c.ville, s.publicitaire, s.vip, s.voeux, s.type_evenement, s.invitation, s.nbparticipant FROM clients
   c inner JOIN service s ON c.id=s.id_user where 1 AND s.date_relance_service='' AND c.date_relance='' ";
 
	$requy=$_SESSION['req'];
	$resultat_sql=mysql_query($requy)or die(mysql_error());
 
	if(file_exists(FILENAME))
		unlink(FILENAME); //Suppression du fichier
 
	$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
	$sheet->Name="Rapport appel des clients";//Attribution d'un nom à la feuille
	$j=64;//C'est ici qu'on va jouer sur les codes ascii
	$jj=64;
	$client_prec=0;	
	$nombre_ligne=0;
	while($row=mysql_fetch_object($resultat_sql)){//Parcours du résultat de la requête
		if($client_prec != $row->XID_CLIENT){//Rupture sur le numéro de client
			$j++;
			$i=3;
			if($nombre_ligne>0){
				$lignes[]=$nombre_ligne;//le tableau $lignes contiendra le nbre d'appels par client
				$nombre_ligne=0;
			}
			//Ce bloc if vérifie si il s'agit d'une colonne de type "A" "B" ou "AA" "AB"...
			if($jj==64){
				$cell=$sheet->Range(chr($j).'1');//chr, renvoie la lettre correspondant au code ASCII
			}
			else{
				$cell=$sheet->Range(chr($jj).chr($j).'1');//ligne 51
 
			}						
			$cell->value=$row->contact;//Attribution d'une valeur à la cellule
			$cell->HorizontalAlignment=-4108;//On centre le texte
			$cell->Font->ColorIndex = 41;//Coloration
		}
		$nombre_ligne++;//$nombre_ligne sert à calculer le nbre d'appels par client
		if($jj==64){
			$cell=$sheet->Range(chr($j).$i);
		}
		else{
			$cell=$sheet->Range(chr($jj).chr($j).$i);		}
		//Si $j représentant la colonne simple = "Z", alors incrémenter $jj qui représente la 2ème colonne
		if(chr($j)=='Z'){
			$jj++;
			$j=64;
		}
		$cell->value=$row->ville;//Attribution de la date et de l'heure à la cellule
 
		/* Notez que selon vos paramètres régionnaux et la configuration d'Excel, vous devez peut-être
		utiliser un format de cellule comme ceci: dd/mm/yyyy hh:mm:ss (anglais)*/
		$client_prec=$row->XID_CLIENT;//gestion de la rupture sur le numéro de client
		$i++;
	}
 
	$lignes[]=$nombre_ligne;//ajout des appels du dernier client dans $lignes
$sorted=$lignes; //on copie le nombre d'enreg par client dans un autre tableau
sort($sorted); //on trie cet autre tableau
//on récupère le plus grand nombre de record, pour pouvoir aligner les résultats dans Excel 
$max_val=5+$sorted[count($sorted)-1]; 
$colonne=65;
$colonne2=64;
//Boucle allant afficher le nombre total d'appels	par client
for($i=0;$i<count($lignes);$i++){	
	if($colonne2>64){
		$cell=$sheet->Range(chr($colonne2).chr($colonne).$max_val);
	}
	else{
		$cell=$sheet->Range(chr($colonne).$max_val);
	}
	if(chr($colonne)=='Z'){
		$colonne2++;
		$colonne=64;
	}
	$cell->value="Total: ".$lignes[$i];
	$cell->HorizontalAlignment=-4108;
	$cell->Font->ColorIndex=3;
	$colonne++;
}
$book->saveas(FILENAME);//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


sauriez pas pourquoi siouplais?

merchi!