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 :

PHPExcel et impression automatique


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Cobol sur Mainframe et Unix AIX
    Inscrit en
    Mars 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cobol sur Mainframe et Unix AIX

    Informations forums :
    Inscription : Mars 2012
    Messages : 196
    Points : 69
    Points
    69
    Par défaut PHPExcel et impression automatique
    Bonjour,

    Le but serait d'avoir un minimum de manipulation pour l'utilisateur.
    Pour mon club de plongée, nous devons effectuer une Inpection Visuelle tous les ans.
    Il existe un fichier Excel qu'ils utilisent.
    J'aimerai alimenter ce fichier Excel avec les données de la bouteille pour ensuite l'imprimer automatiquement, avoir le moins de manipulation possible (plus de 300 blocs).

    Auriez vous une idée comment faire ?


    Pour le moment, je passe par un document PDF pour ensuite espérer l'afficher dans un nouvel onglet et que l'utilisateur fasse l'impression.
    Mais là, je bloque sur l'enregistrement en PDF.

    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
    <?php
    echo "<h1a>Test feuille Excel</h1A>";
    /** Error reporting */
    error_reporting(E_ALL);
     
    /** PHPExcel */
    include 'classes/PHPExcel.php';
     
    /** PHPExcel_Writer_Excel2007 */
    include 'classes/PHPExcel/Writer/Excel2007.php';
    include 'classes/PHPExcel/Writer/Excel5.php';
    include 'classes/PHPExcel/Writer/PDF.php';
     
    // Créer un nouvel objet PHPExcel
    echo "<br>" . date('H:i:s') . " Create new PHPExcel object\n";
    $objPHPExcel = new PHPExcel();
     
    $objet = new PHPExcel_Reader_Excel5();
    echo "<br>" . date('H:i:s') . " objet PHPExcel";
     
    $Repertoire = "documents/TIV/";
    $FicherXLS =  $Repertoire . "Feuille_IV.xls";
    $objPHPExcel = $objet->load($FicherXLS);
    // Ajoutons quelques données
    echo "<br>" . date('H:i:s') . " après cahrgement du fichier $FicherXLS";
     
    $objPHPExcel->setActiveSheetIndex(0);
    $objPHPExcel->getActiveSheet()->SetCellValue('E3', '2013-01');
    $objPHPExcel->getActiveSheet()->SetCellValue('G3', '25/01/2013');
    $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
    $objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');
     
    echo "<br>" . date('H:i:s') . " avant Writer PDF";
    // Enregistrer en PDF, mon problème
    $objWriter  = new PHPExcel_Writer_PDF($objPHPExcel);
    echo "<br>" . date('H:i:s') . " après Writer PDF";
    $objWriter->save('Test12.pdf');
    echo "<br>" . date('H:i:s') . " asave PDF";
     
    // Enregistrer le tout dans un document .xls
    echo "<br>" . date('H:i:s') . " Write to Excel2007 format\n";
    $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
    $objWriter->save('Test12.xls');
    ?>
    ça bloque au niveau de : $objWriter = new PHPExcel_Writer_PDF($objPHPExcel);
    en sortie j'ai ceci :
    Test feuille Excel
    06:28:28 Create new PHPExcel object
    06:28:28 objet PHPExcel
    06:28:28 après cahrgement du fichier documents/TIV/Feuille_IV.xls
    06:28:28 avant Writer PDF
    Merci pour votre aide.

    Eddy

  2. #2
    Membre du Club
    Homme Profil pro
    Cobol sur Mainframe et Unix AIX
    Inscrit en
    Mars 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cobol sur Mainframe et Unix AIX

    Informations forums :
    Inscription : Mars 2012
    Messages : 196
    Points : 69
    Points
    69
    Par défaut
    Je pense qu'il manquait ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="recap-'.date('Y-m-d').'.xlsx"');
    header('Cache-Control: max-age=0');
    J'arrive à afficher le fichier Excel ... mais en petit.
    Je vais tenter de l'ouvrir dans un autre onglet

  3. #3
    Membre du Club
    Homme Profil pro
    Cobol sur Mainframe et Unix AIX
    Inscrit en
    Mars 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cobol sur Mainframe et Unix AIX

    Informations forums :
    Inscription : Mars 2012
    Messages : 196
    Points : 69
    Points
    69
    Par défaut
    Bon, j'avance.
    Je peux afficher ma feuille Excel modifiée sur la page web, certe, petit, mais bon, c'est déjà ça.

    Voici mon bout de code pour exporter au format PDF :
    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
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    date_default_timezone_set('Europe/Paris');
     
    /** Include PHPExcel_IOFactory */
    require_once 'classes/PHPExcel/IOFactory.php';
    require_once 'classes/PHPExcel/Writer/PDF.php';
     
    require_once 'classes/PHPExcel/Writer/PDF/DomPDF.php';
     
    require_once 'fonctions/fonctions_user.php';
    require_once 'fonctions/Dates.php';
    require_once 'classes/class_constantes.php';
    require_once 'fonctions/fonctions_generales.php';
     
    $Afficher_Trace = Recup_Param("TRACE", "materiel_bloc_Feuille_IV_xls", "");
    if ($Afficher_Trace == "O") {
        $TRACE = TRUE;
    }
    else {
        $TRACE = FALSE;
    }
     
    require_once 'classes/class_materiel.php';
    $Class_Materiel = new materiel($GLOBALS['bdd']);
     
    require_once 'classes/class_licencies.php';
    $Class_Licencies = new licencies($GLOBALS['bdd']);
     
    require_once 'classes/class_fabricant.php';
    $Class_Fabricants = new fabricant($GLOBALS['bdd']);
     
    $Repertoire = "documents/TIV/";
    $FicherXLS =  $Repertoire . "Feuille_IV.xls";
    if (!file_exists($FicherXLS)) {
        echo "<h2 id='msgerror'>Le fichier $FicherXLS est inconnu.<br>Merci de voir avec le service informatique</h2>";
        die();
    }
     
     
    $rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF;
    $rendererLibrary = 'autoload.inc.php';
    $rendererLibraryPath = 'DomPDF/' . $rendererLibrary;
     
    if (!PHPExcel_Settings::setPdfRenderer($rendererLibrary,$rendererLibraryPath)){
        die(
            "<h2 id='msgerror'>NOTICE: Please set the $rendererName and $rendererLibraryPath values" .
            "<br />" .
            "at the top of this script as appropriate for your directory structure</h2>"
            );
    }
    Seulement, il ne trouve pas ma bibliothèque : if (!PHPExcel_Settings::setPdfRenderer($rendererLibrary,$rendererLibraryPath)){

    Mon projet est arboré comme ceci :
    /core/pages : contient mes pages php, dont celle que qui contient ce script
    /classes : contient les classes, et toutes les répertoires des classes, dont PHPExcel
    /DomPDF

    Auriez-vous une idée ?

    C'est bien la bibliothèque DomPDF qui est à la racine que je dois mettre ?

    Merci.

    Eddy

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 190
    Points : 15 462
    Points
    15 462
    Par défaut
    si vous n'arrivez pas à avancer avec cette bibliothèque, il sera peut-être plus pratique d'exporter la feuille au format csv et d'utiliser fpdf pour générer le résultat en pdf :
    http://fpdf.org/fr/script/script92.php

  5. #5
    Membre du Club
    Homme Profil pro
    Cobol sur Mainframe et Unix AIX
    Inscrit en
    Mars 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Cobol sur Mainframe et Unix AIX

    Informations forums :
    Inscription : Mars 2012
    Messages : 196
    Points : 69
    Points
    69
    Par défaut
    Merci Mathieu d'avoir pris le temps de répondre.
    Mais, là, on perd l'intérêt du format Excel qui a déjà toutes les colonnes de formatées, les polices, les couleurs, ....
    Et il faut donc construire le document PDF à partir du fichier Excel.
    C'est justement ce que je voudrais éviter.

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 190
    Points : 15 462
    Points
    15 462
    Par défaut
    j'attendais des réponses d'autres membres du forum mais personne n'a l'air d'avoir d'idée pour votre souci. donc je reviens vous proposer autre chose.

    les tableurs sont surtout optimisée pour fonctionner de façon autonome avec les autres logiciels de la même suite. et ils sont plus compliqués quand il s'agit de communiquer avec l'extérieur, avec un site ou un autre logiciel.
    donc une autre piste serait de faire votre mise en forme dans le tableur lui même, avec le langage de macro.

Discussions similaires

  1. impression automatique en mfc
    Par nikus_knx dans le forum MFC
    Réponses: 3
    Dernier message: 10/04/2006, 12h38
  2. Impression automatique
    Par maximdus dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/03/2006, 18h23
  3. [Javascript] Gerer impression automatique de document
    Par amarcil dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/02/2006, 16h08
  4. Impression automatique
    Par Poussy-Puce dans le forum ASP
    Réponses: 1
    Dernier message: 09/02/2006, 11h36
  5. Impression automatique involontaire d'un état
    Par Celia1303 dans le forum Access
    Réponses: 5
    Dernier message: 27/10/2005, 00h29

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