IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[COM] Mettre les données en colonne


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut [COM] Mettre les données en colonne
    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!
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    essai comme dans l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    define("FILENAME","D:\\mgftftftfftftp\\httftftftftfpdocs\\essaiexcel.xls");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Débutant   Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Points : 262
    Points
    262
    Par défaut


    oué, bah c'etait evidemment ca...



    merchi sabotage!

    et bonne année!
    fan de Dune et de Monkey Island ? venez voir mon jeu point and click du style du jeu DUNE sorti en 1992 ! DUNE - Moneo au service de l'Empereur-dieu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Mettre les données d'une requête dans la colonne de la table principale
    Par Statistiques33 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 31/05/2019, 14h39
  2. Mettre les données d'une colonne d'un fichier Excel dans une ArrayList
    Par kortobi dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 05/09/2012, 19h40
  3. Réponses: 4
    Dernier message: 27/03/2007, 09h49
  4. Réponses: 2
    Dernier message: 05/02/2007, 10h19
  5. vb6: Mettre les données d'un textbox sous un fichier de type txt
    Par flav66 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/09/2006, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo