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 :

[WriteExcel] Sauvegarder avec PHP_WRITEEXCEL


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut [WriteExcel] Sauvegarder avec PHP_WRITEEXCEL
    Bonjour tout le monde !

    Je viens de trouver une librairie vraiment sympa en php, il s'agit de php_writeexcel.

    J'ai fait un script en PHP me générant un fichier Excel, quand je clique sur un lien permettant de lancer le script j'ai une fenêtre me proposant d'ouvrir, d'enregistrer (le fichier excel généré) ou d'annuler.

    J'aimerai que le lancement de ce script sauvegarde le fichier à un emplacement précis du serveur mais j'ai pas trouvé d'exemple faisant cela.

    Quelqu'un sait-il comment faire cela ?

    D'avance un grand merci et bonne fin de semaine !!

  2. #2
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Bonjour,

    J'utilise moi aussi les classes de phpwriteexcel. Cependant j'ai quelques problèmes à ce niveau.

    Tout d'abord, je pense que si tu veux sauvegarder ton fichier Excel tu dois spécifier le repertoire d'enregistrement à la création de ton fichier, ici par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $fname = tempnam("/tmp", "simple.xls");
    $workbook = &new writeexcel_workbook($fname);
    $worksheet = &$workbook->addworksheet();
    Cependant, je souhaiterai savoir quelle est la structure de ton code pour afficher ta page excel, car j'ai bien utilisé la librairie phpwriteexcel mais mon affichage a lieu une fois sur deux et je ne comprend pas pourquoi.

    Je te présente le code que j'ai implémenté :

    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
     
    <?php
     
    // information pour la connection à le DB
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'masdb';
     
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());	
     
    // on selectionne les enregistrements
    $sql = "SELECT * From TbLigIdentite"; 
    $req = mysql_query($sql,$link); 
    $total = mysql_num_rows($req);
     
    set_time_limit(10);
     
    require_once "class.writeexcel_workbook.inc.php";
    require_once "class.writeexcel_worksheet.inc.php";
     
    $fname = tempnam("/tmp", "simple.xls");
    $workbook = &new writeexcel_workbook($fname);
    $worksheet = &$workbook->addworksheet();
     
    $i=0;
    while ($resultat = mysql_fetch_array($req)){
       	$worksheet->write(($i+2), 0, $resultat["NomLignee"]);
       	$worksheet->write(($i+2), 1, $resultat["CatalogueLig"]);
      	$i=$i+1;
    }
     
    $workbook->close();
     
    header("Content-Type: application/x-msexcel; name=\"example-simple.xls\"");
    header("Content-Disposition: inline; filename=\"example-simple.xls\"");
    $fh=fopen($fname, "rb");
    fpassthru($fh);
    unlink($fname);
     
    ?>
    D'après ce que j'ai fait, cela marche sous FIREFOX mais une fois sur deux sur IE. Bref comparons ...

    De plus est ce que tu sais comment intégrer juste une feuille excel genre un graphique ou un tableau excel dans la page sans effectuer une ouverture d'excel comme c'est le cas dans le script ci-dessus.

    MERCI

    Cordialement

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut
    Salut !!

    Bah pour tout te dire je fais exactement le même affichage que toi, à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    header("Content-Type: application/x-msexcel; name=\"example-simple.xls\"");
    header("Content-Disposition: inline; filename=\"example-simple.xls\"");
    $fh=fopen($fname, "rb");
    Et ça marche très bien, as-tu tester les exemples présents sur le site où tu as téléchargé cette librairie ?

    Sinon pour ta deuxième question, il suffit de mettre en commentaire ces mêmes lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    header("Content-Type: application/x-msexcel; name=\"example-simple.xls\"");
    header("Content-Disposition: inline; filename=\"example-simple.xls\"");
    $fh=fopen($fname, "rb");
    Par contre tu seras confronté au même problème que moi, à savoir comment le sauvegarder sans proposé de l'ouvrir. J'ai déjà pensé à ta méthode, j'ai spécifié le chemin :
    [CODE]$fname = tempnam("/home/srv/www/MaJBdD", "merge2.xls");[CODE]

    puis supprimer les lignes de code qui supprime le fichier (car normalement c'est un fichier temporaire, une fois l'ouverture effectué le programme le supprime)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $fh=fopen($fname, "rb");
    fpassthru($fh);
    unlink($fname);
    et là je me retrouve avec un fichier dans le bon répertoire mais du type : merge2.xlsWd8GaJ donc illisible

  4. #4
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Re bonjour,

    Il suffit juste de mettre ca en commentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    header("Content-Type: application/x-msexcel; name=\"example-simple.xls\"");
    header("Content-Disposition: inline; filename=\"example-simple.xls\"");
    $fh=fopen($fname, "rb");
    Je viens de tester et cela ne marche pas du tout !

    Pour la sauvegarde, je ne sais pas du tout comment faire, je préfère oublier pour le moment car je suis occupé à rendre dynamique l'affichage avec phpwriteexcel et c'est pas du gateau !

    Est-ce-que tu crois que cette boucle est juste ?????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    // J'ai integrer tous les champs de ma requete à afficher 
    // dans un tableau, $col est la taille du tableau
     
    $i=0;
    while($resultat = mysql_fetch_array($sql)){
     
    for($j=0;$j<=$col;$j++){
     
    $worksheet->write($i,$j,$resutat["$champs[$j]"]);
    }
    $i++;
    }
    Logiquement le code ci-dessus doit afficher de la même manière que ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $i=0;
    while($resultat = mysql_fetch_array($req)){
    worksheet->write($i,1,$resultat["var1"]);
    worksheet->write($i,2,$resultat["var2"]);
    worksheet->write($i,3,$resultat["var3"]);
    $i++
    }
    La deuxième solution fonctionne mais pas la première pourquoi .....;

    Au fait pour l'affichage sans ouvrir excel regarde cette exemple :

    http://iut-adour.univ-pau.fr/anciens...es&menu=menu_2

    >> Choisir une promotion sur le site

    Tiens moi au courant,

    Merci

  5. #5
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Il nous faudrait un TUTAUX pour PHPWRITEEXEL ...

  6. #6
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Enfin mon export fonctionne bien je vous communiquerai le code ce soir ! Je sors du bureau CONFIANT ...

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

Discussions similaires

  1. [WriteExcel] fopen avec php_writeexcel
    Par Misoss dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 28/07/2010, 07h40
  2. Problème de sauvegardes avec Oracle Enterprise Manager
    Par piotrek30 dans le forum Entreprise Manager
    Réponses: 5
    Dernier message: 30/05/2006, 11h08
  3. Sauvegarder avec IBBackup sous FireBird
    Par tipiweb dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/04/2006, 19h28
  4. automatiser les sauvegardes avec mysql administrator
    Par beckham07 dans le forum Outils
    Réponses: 1
    Dernier message: 09/03/2006, 13h58
  5. Journal de sauvegarde avec crontab
    Par prefna dans le forum Administration système
    Réponses: 3
    Dernier message: 29/11/2005, 15h29

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