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

PHP & Base de données Discussion :

Sauvegarde de données dans un fichier Excel [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut Sauvegarde de données dans un fichier Excel
    Bonjour à tous, je viens de consulter plusieurs sites sur le sujet et ai étudié plusieurs scripts, et après reflexion, j'ai décidé de retenir celui qui est dispo sur le site à savoir celui qui passe par l'objet COM.

    Bon maintenant j'explique mon sushi, dés que le premier symbole '->' est rencontré, le script se contente de m'afficher le code à l'écran mais sans rien m'executer du tout

    Je vous met la ligne concernée au cas où ça vous parlerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $excel->sheetsinnewworkbook=1;
    à partir du ->, il m'affiche tout le reste du code jusqu'en bas, et même le ?> de la fin...je suis pas un adepte de l'objet en php mais quelqu'un connait-il un moyen de remédier à ça ?

    Merci d'avance !!

  2. #2
    Membre éprouvé Avatar de Alvaten
    Homme Profil pro
    Développeur Java / Grails
    Inscrit en
    Novembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java / Grails
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 324
    Par défaut
    Salut,

    Tu n'aurais pas plus de code à nous montrer car ta ligne à l'air correcte, ça doit venir d'ailleurs.

    J'utilise cette méthode pour créer des fichier excel et je n'ai jamais rencontrer ce problème.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Le reste du code ressemble plus ou moins à ce qui est présent sur le site, je comptais le modifier par la suite une fois que j'aurai vu que ça marchait :

    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
    define("FILENAME","bidon.xls"); //constante: nom du fichier à générer
    $conn=mysql_connect('localhost','root','') or die('Probleme lors de la connexion a la BD MYSQL');
    mysql_select_db('warningtest',$conn) or die('Problème lors de la sélection de la BD MYSQL');//Sélection de la DB "phpexcel"
    $query="SELECT Num_RDV from expeditions;";
     
    $res=mysql_query($query) or die('Problème lors de la réception des enregistrements '.$query);//Exécution de la requête
     
    if(mysql_num_rows($res)>0){ //Si au moins une ligne est retournée
    	if(file_exists(FILENAME)){	//Suppression du fichier précédement créé
    		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="Numéro des RDV";//Attribution d'un nom à la feuille
     
    	$j=64;//C'est ici qu'on va jouer sur les codes ascii
    	$jj=64;
    	$rdv_prec=0;	
    	$nombre_ligne=0;
    	while($row=mysql_fetch_object($res)){//Parcours du résultat de la requête
    		if($rdv_prec != $row->Num_RDV){//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');
    			}						
    			$cell->value=$row->Num_RDV;//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->Num_RDV;//Attribution de la date et de l'heure à la cellule
    		//$cell->NumberFormat="jj/mm/aaaa hh:mm:ss";//Définition du format de 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->Num_RDV;//gestion de la rupture sur le numéro de client
    		$i++;
    	}
    }
    else{
    	die('Les tables sont vides ou pas de jointure possible');//si la requête ne retourne rien
    }
     
    $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
    Et tout ce qui se trouve après le premier '->' est simplement affiché à l'écran sans être éxécuté...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Votre code est incomplet : n'utiliseriez-vous pas les short_open_tag (en clair <? au lieu de <?php) alors que cette fonction est désactivée sur votre serveur (à vérifier par rapport à la sortie d'un phpinfo) ? En éditant la source de la page via votre navigateur, voyez-vous le code PHP intégralement ?

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Par défaut
    Effectivement...pourtant j'ai déja rencontré ce problème auparavant mais la j'ai pas du tout tilté...

    C'est bien parceque j'avais mis <? au lieu de <?php, merci de votre réactivité

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

Discussions similaires

  1. Exportation des données dans un fichier Excel
    Par Koukouknizou dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/07/2007, 14h22
  2. Réponses: 1
    Dernier message: 09/05/2007, 23h10
  3. updater des données dans mon fichier excel
    Par gantec dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/02/2007, 16h01
  4. Sauvegarder les données dans un fichier CSV
    Par beb30 dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2006, 13h06
  5. Exporter données dans un fichier excel
    Par Kasanova75 dans le forum Oracle
    Réponses: 3
    Dernier message: 08/03/2006, 10h09

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