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] Génération de Fichiers Excel [Tutoriel]


Sujet :

Bibliothèques et frameworks PHP

  1. #81
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par te-san Voir le message
    Mon problème était qu'il y avait du code html avant le code php.
    J'ai simplement fait un lien qui ne renvoyait aucun html, (simplement la page contenant le code php).
    Et donc c'est ce que je dit depuis le début, dans vos include ou quelqe part vous avez des caractères qui sont envoyé avant la génération de votre fichier Excel.

    En ce qui concerne le format d'une celule, vous pouvez la définir de façon explicite .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sheet->setCellValueExplicit("A1",'2009-12-10',PHPExcel_Cell_DataType::TYPE_STRING);
     
    //ou
     
    $sheet->setCellValueExplicitByColumnAndRow(0,0,'2009-12-10',PHPExcel_Cell_DataType::TYPE_STRING);

  2. #82
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup Maitre pour votre aide.

  3. #83
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Bonjour, j'ai un soucis avec les formules :
    Si je laisse la formule dans le fichier de base que j'utilise
    Il faut que j'aille valider dans la case pour que la formule s'exécute correctement. Alors je tente ceci mais j'ai une erreur :
    _raiseFormulaError message is Formula Error: An unexpected error occured
    Que puis-je faire? Pour que quand j'ouvre le fichier la formule ce soit bien exécuté .
    Merci encore Maître Pylos pour ce tuto !
    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
     
    include 'PHPExcel/IOFactory.php';					 
     
    //on instancie un objet de lecture
    $objReader = PHPExcel_IOFactory::createReader('Excel5');
     
    //on charge le fichier qu'on veut lire
     
    $objPHPExcel = $objReader->load("PPSvM.xls");
     
    //on modifie ce fichier
    					 $objPHPExcel->getActiveSheet()->setSheetState(PHPExcel_Worksheet::SHEETSTATE_VISIBLE);					
    					$objPHPExcel->getActiveSheet()->setCellValue('H12',2);
    					 $objPHPExcel->getActiveSheet()->setCellValue('M12',25);
    					 $objPHPExcel->getActiveSheet()->setCellValue('N12','=SI(CELLULE("contenu";M12)=0;0;L12/M12)');					 
    //on crée un nouveau fichier
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
     
    //on le sauve
    $objWriter->save('coco.xls');

  4. #84
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    J'ai un fichier excel avec plusieurs feuilles, je voudrais savoir comment faire pour écrire dans chacune de ces feuilles.

  5. #85
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    @rilax

    Il faut mettre de virgules et non des points virgules !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $objPHPExcel->getActiveSheet()->setCellValue('N12','=SI(CELLULE("contenu",M12)=0,0,L12/M12)');
    @jacadi87

    Essaye quelques choses du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sheet1 = $objPHPExcel->getSheet(0);
    $sheet2 = $objPHPExcel->getSheet(1);
    $sheet3 = $objPHPExcel->getSheet(2);

  6. #86
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Euh cela ne change rien j'ai la même erreur...

  7. #87
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    inspire toi de ceci qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow("$col","$lig",'=IF('.$datepaycustom.'="",0,'.$montantinvoice.')')

  8. #88
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sheetupa->setCellValue('N12','=IF(CELL("contenu",M12)=0,0,L12/M12)');
    J'ai réussi cependant, y a encore un soucis..
    La formule pour qu'elle soit calculée, dans le fichier excel en sortie, il faut aller dans la cellule et appuyer sur Entrée . Elle n'est pas calculée automatiquement.
    Comment faire?

  9. #89
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Et comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sheetupa->setCellValue('N12','=IF(CELL("contenu",M12)=0,0,L12/M12)');
    $sheetup->getCell("N12")->getCalculatedValue();

  10. #90
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Cela ne fonctionne pas non plus il faut vraiment aller dans la cellule pour valider le calcul de la formule...Car bon valider toutes les formules à la main quoi..

  11. #91
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    je peux voir ton code ?

  12. #92
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Le voilà
    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
     
     
    					include 'PHPExcel/IOFactory.php';
     
     
     
    					//on instancie un objet de lecture
    					$objReader = PHPExcel_IOFactory::createReader('Excel5');
     
    					//on charge le fichier qu'on veut lire
     
    					$objPHPExcel = $objReader->load("PPSvM.xls");
     
    					$sheetupa=$objPHPExcel->getActiveSheet()->setTitle($upa);
     
     
    					$sheetupa->setCellValue('H12',2);
    					 $sheetupa->setCellValue('M12',25);
    					 $sheetupa->setCellValue('N12','=IF(CELL("contenu",M12)=0,0,L12/M12)');
     
     
    					 $sheet1=$sheetupa->copy();
    					 $sheet1->setTitle('Ligne 1');
    					 $objPHPExcel->addSheet($sheet1);
     
     
    					//on crée un nouveau fichier
    					$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    					//on le sauve
    					$objWriter->save('coco.xls');

  13. #93
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    J'obtient 2-25-8% est-ce la réponse attendue ?

  14. #94
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    J'ai essayé ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sheet1 = $objPHPExcel->getSheet(0);
    $sheet2 = $objPHPExcel->getSheet(1);
    $sheet3 = $objPHPExcel->getSheet(2);
    $sheet4 = $objPHPExcel->getSheet(3);
    $sheet5 = $objPHPExcel->getSheet(4);
    mais ca ne marche pas ca me mets toutes les informations dans la première feuille.

  15. #95
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //on instancie un objet de lecture
    $objReader = PHPExcel_IOFactory::createReader('Excel5');
     
    //on charge le fichier qu'on veut lire
     
    $objPHPExcel = $objReader->load("PPSvM.xls");
     
    $sheetupa=$objPHPExcel->getSheet(0);
    $sheet2 = $objPHPExcel->getSheet(1);
    $sheet2->setCellValue('A1','cool');
    $sheetupa->setTitle('coco');
    fonctionne nickel

  16. #96
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Oui c'est bien cela la réponse attendu?
    Elle s'affiche toute seule pour vous?

  17. #97
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Citation Envoyé par Rilax Voir le message
    Oui c'est bien cela la réponse attendu?
    Elle s'affiche toute seule pour vous?
    Oui, vous faites une légère erreur.

    Remplacer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sheetupa=$objPHPExcel->getActiveSheet()->setTitle($upa);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sheetupa=$objPHPExcel->getActiveSheet();
    $sheetupa->setTitle($upa);
    Je ne suis plus sur ma machine pro, donc je peux poster le code complet seulement Lundi, si nécessaire

  18. #98
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    J'ai toujours le problème de l'écriture sur un fichier avec plusieurs feuille, je veux remplir chaque feuille avec des données de la base et quand je faits:
    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
     
    $objReader = PHPExcel_IOFactory::createReader('Excel5');	 
    $objPHPExcel = $objReader->load("exampleTemplate.xls");
    $sheet1 = $objPHPExcel->getActiveSheet(1);
    $i= 2;
    ...
    while($rowHead = mysql_fetch_array($result)){
     
    $sheet1->setCellValueByColumnAndRow(0,$i, 	$rowHead['Nom']); 
    $sheet1->setCellValueByColumnAndRow(1,$i, 	$rowHead['Prenom']);
    $i++;	
    }
    $sheet2 = $objPHPExcel->getActiveSheet(2);	
    ...
    while($rowHead = mysql_fetch_array($result)){
     
    $sheet2->setCellValueByColumnAndRow(0,$i, 	$rowHead['Number']); 
    $sheet2->setCellValueByColumnAndRow(1,$i, 	$rowHead['Date']);
    $i++;
    }
    ...
    Ça m'affiche les résultats dans la primière feuille et pas dans les 2.

  19. #99
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    essaye ça
    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
     
    $objReader = PHPExcel_IOFactory::createReader('Excel5');	 
    $objPHPExcel = $objReader->load("exampleTemplate.xls");
    $sheet1 = $objPHPExcel->$objPHPExcel->getSheet(0);
    $i= 2;
     
    while($rowHead = mysql_fetch_array($result)){
     
    $sheet1->setCellValueByColumnAndRow(0,$i, 	$rowHead['Nom']); 
    $sheet1->setCellValueByColumnAndRow(1,$i, 	$rowHead['Prenom']);
    $i++;	
    }
    $sheet2 = $objPHPExcel->getSheet(1);
     
    while($rowHead = mysql_fetch_array($result)){
     
    $sheet2->setCellValueByColumnAndRow(0,$i, 	$rowHead['Number']); 
    $sheet2->setCellValueByColumnAndRow(1,$i, 	$rowHead['Date']);
    $i++;
    }

  20. #100
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Oui, vous faites une légère erreur.

    Remplacer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sheetupa=$objPHPExcel->getActiveSheet()->setTitle($upa);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sheetupa=$objPHPExcel->getActiveSheet();
    $sheetupa->setTitle($upa);
    Je ne suis plus sur ma machine pro, donc je peux poster le code complet seulement Lundi, si nécessaire
    Cela ne me change rien ... La formule ne se calcule pas automatiquement..
    C'est peut être un soucis de paramétrage Excel..

Discussions similaires

  1. [Excel] Bug I.Explorer après génération de fichiers excel
    Par wtoueress dans le forum Bibliothèques et frameworks
    Réponses: 20
    Dernier message: 30/06/2008, 13h40
  2. Génération de fichier Excel Ou Word
    Par Maz85 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 23/08/2007, 17h28
  3. Génération de fichiers Excel à partir de code HTML
    Par grincheux dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/06/2007, 14h39
  4. [Excel] Génération de fichiers
    Par abidi_niz dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/07/2006, 09h29
  5. [VBA-E]Génération de fichiers Excel à partir d'un autre
    Par cyrille2k5 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/05/2006, 10h27

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