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

Symfony PHP Discussion :

Enregistrement fichier Excel avec PHPExcel [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 37
    Points : 48
    Points
    48
    Par défaut Enregistrement fichier Excel avec PHPExcel
    Bonjour,

    Sous Symfony2.0.17 avec PHpExcel 1.7.7, LiugioExcelBundle et le n3b.

    Pas moyen d'écrire dans un fichier Excel. J'arrive à lire, boucler, afficher mes tableaux dans ma page Web.

    Voilà mon code:
    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
    	public function lireFeuilleAction($feuillA = 0, $feuillB = 0) 
    	{
    		$em1 = $this->container->get('doctrine')->getEntityManager();
     
    		$fichA = "C:\Documents and Settings\bzn\Bureau\PHPExcel-Tests\FichierA.xls";
    		$fichB = "C:\Documents and Settings\bzn\Bureau\PHPExcel-Tests\FichierB.xls";
     
    		    // créer objet reader
    		    $xls_service =  $this->container->get('xls.load_xls5');
     
     
    		    //Créer l'objet qui va charger le classeur définit dans le load
    		    $exelObj_A = $xls_service->load($fichA);
    		    $exelObj_B = $xls_service->load($fichB);
     
    		    //Récupération des dernières lignes et colonnes du classeur A
    		    $objWorksheet_A = $exelObj_A->getActiveSheet();
    		    $highestRow_A = $objWorksheet_A ->getHighestRow();
    		    $highestColumn_A = $objWorksheet_A ->getHighestColumn();
     
    		    //Récupération des dernières lignes et colonnes du classeur B
    		    $objWorksheet_B = $exelObj_B->getActiveSheet();
    		    $highestRow_B = $objWorksheet_B ->getHighestRow();
    		    $highestColumn_B = $objWorksheet_B ->getHighestColumn();
     
    		    //Récupération de la première feuille des fichier Excel
    		    //Lecture classeur "FichierB.xls" et A
    		    $sheet_A = $exelObj_A->getSheet($feuillA);
    		    $sheet_B = $exelObj_B->getSheet($feuillB);
     
    		    $colA = 1;
    		    $colB = 1;
    		    $compt = 0;
    		    for ($rowA = 1; $rowA <= $highestRow_A; ++$rowA) 
     
    		    {
    		        $valA = $objWorksheet_A->getCellByColumnAndRow($colA, $rowA)->getValue();
     
    		        for ($rowB = 1; $rowB <= $highestRow_B; ++$rowB)
     
    		        {
    		            $valB = $objWorksheet_B->getCellByColumnAndRow($colB, $rowB)->getValue();
    		            if($valA = $valB)
    		            {
    		                // Définition de la feuille active
    		                $compt = $compt + 1;
    		                $exelObj_B->setActiveSheetIndex($feuillB);
    		                $exelObj_B->getActiveSheet()->setCellValueByColumnAndRow(1, $rowB, $valA);
    		            }	
    		        }
    		    }
    ici le reste pour envoyer ma page

    Comme l'écriture ne se faisait pas, j'ai essayé d'écire directement en dehors de ma boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		    //Test d'écriture dans le fichier
    $exelObj_B->setActiveSheetIndex(0);
    $exelObj_B->getActiveSheet()->setCellValueByColumnAndRow(2, 2, "Coucou!");
    $exelObj_B->getActiveSheet()->setCellValue('A1', 'Fichier de test');
    Si quelqu'un avait une idée. Merci d'avance

    @ +++

    Kris

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Points : 28
    Points
    28
    Par défaut
    Je ne sais pas si cela peut t'aider mais regarde ma réponse. Je montre le code que j'ai utilisé : http://www.developpez.net/forums/d12...ichier-ouvrir/

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Salut Ray,

    En fait je ne veux pas créer un fichier, je veux modifier un fichier existant, mais je te remercie quand-même.

    De plus l'enregistrement doit rester transparent pour l'utilisateur (Pas de boîte de dialogue voulez-vous enregistrer...), étant donné que dans l'appli il est déjà spécifié qu'il va modifier un fichier

    @ +++

    Kris

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 37
    Points : 48
    Points
    48
    Par défaut
    Problème résolu dans un simple fichier en dehors de Symfony2.

    Je mets le code de test qui a fonctionné:

    <code="php">
    error_reporting(E_ALL);
    set_time_limit(20);
    include 'C:/wamp/www/Symfony/vendor/phpexcel/lib/PHPExcel/Classes/PHPExcel/IOFactory.php';

    $fileType = 'Excel5';
    $filePath = 'C:/Documents and Settings/bzn/Bureau/PHPExcel-Tests/';
    $fileName = 'FichierB.xls';
    $fileNameComp = $filePath . $fileName;

    // Read the file
    $objReader = PHPExcel_IOFactory::createReader($fileType);
    $objPHPExcel = $objReader->load($fileNameComp);

    // Change the file
    $objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A1', 'Coucou')
    ->setCellValue('A5', 'Coucou 333');

    // Write the file
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
    $objWriter->save($fileNameComp);

    echo('Work done!');

    </code>

    @ Peluche les petits canards

    Kris63

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/11/2011, 16h54
  2. Enregistrement d'un fichier Excel avec date et contenu d'une TextBox
    Par thomasisajerk dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/08/2010, 19h40
  3. Enregistrement d'un fichier Excel avec COM
    Par sayomona23 dans le forum Langage
    Réponses: 0
    Dernier message: 06/03/2010, 01h59
  4. comment enregistrer un fichier excel avec le vba
    Par zaki_1982 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2008, 18h09
  5. Réponses: 3
    Dernier message: 02/04/2007, 21h52

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