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 :

[Excel] PHP, excel, linux ???


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Par défaut [Excel] PHP, excel, linux ???
    bonjour,
    je crois que le titre est asser explicite...

    connaissez vous un moyen "simple" de manipuler des fichiers excel sous linux avec php ?

    ( oui je sais, excel, linux ça fais mais je ne peux pas "demenager" un serveur juste pour ça )

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Par défaut
    je precise que j'ai vu ceci dans mes recherches :
    je ne suis pas tres fort en anglais, mais :
    ( http://pear.php.net/package/Spreadsheet_Excel_Writer )
    Spreadsheet_Excel_Writer was born as a porting of the Spreadsheet::WriteExcel Perl module to PHP.
    It allows writing of Excel spreadsheets without the need for COM objects.
    It supports formulas, images (BMP) and all kinds of formatting for text and cells.
    It currently supports the BIFF5 format (Excel 5.0), so functionality appeared in the latest Excel versions is not yet available.
    signifie bien que tout ce que je ferais avec ça sous PHP pour excel derniere version ne fonctionnera pas ?
    ( je ne peux pas non plus installer un vieux excel sur les potes clients. )

    de plus, il n'y a visiblement pas beaucoup de documentation en français ( je les lirais en anglais, mais si vous avez une autre solution, je preferrerais ... )

    merci d'avance

  3. #3
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    It currently supports the BIFF5 format (Excel 5.0), so functionality appeared in the latest Excel versions is not yet available
    Cette phrase veut dire que tu ne pourras exploiter que les fonctionnalités d'excel 5.0. Mais microsoft n'étant tout de même pas le diable, il assure une compatibilité des vieux fichiers excel avec les nouvelles versions de l'applications.

    Bon, ceci dit je ne sais dans quel but tu veux créer des fichiers excel, mais si c'est pour balancer un tableau de 4 colonnes et 30 lignes tourne toi plutot vers le CSV ou les formats du même genre. Cela te prendre 40 fois moins de temps.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Par défaut
    ce n'est pas un tableau de 4 colonnes et 30lignes, mais 20feuilles
    et 4graphiques...

    ( et peut-etre des macros faites par quelqu'un d'autre... )

  5. #5
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    ah ouais vaut mieux que tu passes par une librairie la. Et avant de me lancer dedans par mesure de sécurité je vérifierais que Excel manges bien les fichiers excel créé avec PEAR, on est jamais trop prudent

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Par défaut
    Citation Envoyé par ePoX
    ah ouais vaut mieux que tu passes par une librairie la. Et avant de me lancer dedans par mesure de sécurité je vérifierais que Excel manges bien les fichiers excel créé avec PEAR, on est jamais trop prudent
    oui c'est sur,
    mais si jamais quelqu'un a une autre solution a me proposer que PEAR, je suis preneur !

    et si quelqu'un a deja essayer/relaiser des choses avec PEAR, je suis aussi preneur du retour d'experience...

  7. #7
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Une url intéressante :
    http://www.theleehousehold.com/serendipity/index.php?/archives/4-Workable-package-of-PHP-Spreadsheet-Writer..html

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Par défaut
    j'ai finalement choisi d'installer un serveur Apache + PHP + Mysql sous windows, juste pour ça...

    mon nouveau probléme, l'objet COM "rame"
    auriez vous une idée d'ou peut venir ce probléme ?
    le code source est un copier / coller integral du tutoriel
    http://stephaneey.developpez.com/tutoriel/php/phpexcel/
    ( code n°1, apres avoir prealablement creer la base phpexcel et rentré les données qui vont bien... )

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 32
    Par défaut
    quand tu dis qu'il rame ca veut dire quoi ....

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Par défaut
    ça veut dire page blanch, barre de progression qui charge, mais rien ne s'affiche...
    j'ai essayé de mettre un
    echo 'toto';
    dans la boucle qui genere les lignes/cellules
    suivit d'un flush();

    et je ne voi pas toto...

    la page charge, sans s'arreter.

    je remet le code au cas ou .. :
    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
    <?			
    define("FILENAME","test.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('phpexcel') or die('Problème lors de la sélection de la BD MYSQL');//Sélection de la DB "phpexcel"
    $query="SELECT DATE_APPEL,NOM_CLIENT,XID_CLIENT  FROM APPELS_CLIENTS INNER JOIN CLIENTS ON ";
    $query.="ID_CLIENT=XID_CLIENT ORDER BY XID_CLIENT,DATE_APPEL";//Requête faisant une jointure sur les 2 tables
    $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
    	$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($res)){//Parcours du résultat de la requête
    	echo 'toto';flush();
    		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');
    			}						
    			$cell->value=$row->NOM_CLIENT;//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->DATE_APPEL;//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->XID_CLIENT;//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	
    ?>

Discussions similaires

  1. Problèmes pour php sous linux (permissions)
    Par popov2 dans le forum Administration système
    Réponses: 4
    Dernier message: 20/02/2006, 14h19
  2. Php sous linux
    Par azrael88370 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 06/02/2006, 11h14
  3. [EasyPHP] Probleme de deployement d'une application PHP sous linux
    Par stomerfull dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 16/01/2006, 15h39
  4. script php sous linux ???
    Par Florina dans le forum Langage
    Réponses: 5
    Dernier message: 13/12/2005, 17h14
  5. [Plugin] php sous linux
    Par Philia dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 04/12/2004, 20h23

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