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] Plusieurs problèmes


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [PHPExcel] Plusieurs problèmes
    Bonjour,je suis en fait en stage dans une entreprise qui propose des enquêtes. J'ai comme tache de générer un fichier Excel contenant les horaires des jours de la semaine de (lundi à vendredi donc) dans le même style que l'image. Pour cela j'ai trouvé la bibliothèque PHPExcel. J'arrive à créer une feuille la formater les cellules et mettre les informations que je veux. Mais c'est là qu'à moi ce pose quelques problèmes:

    les premiers concernent plus PHP en lui même :
    Les données sont extraite d'une base de données.
    Je voudrais pouvoir faire plusieurs boucles une avec les identifiant (les chiffres à gauche), une autre qui me génère un jour un jour comme dans l'image.

    Pour afficher les r, o,p (qui peuvent être remplacés par n'importe quoi) je ne sais pas comment faire avec une fonction peut-être mais comment ?
    Ensuite pour calculer les r, o et les p j'ai la formule ,mais quand je génère le fichier la formule passe de'=NB.SI(D6:D20; "r")' à '=nb.si(D6:D20; "r")' du coup Excel m'indique une erreur. Et aussi est-il possible d'étendre une formule avec PHPExcel ?

    Pour la police, les couleurs ect , sont optionnels je le ferais si et seulement si j'ai encore le temps pour le faire.
    Si j'en demande trop merci de me le dire.
    Je ne cherche pas à ce qu'on fasse le travail à ma place ,mais des conseils et des pistes.
    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    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
    Salut, si tu es toujours d'attaque je veux bien t'aider.

    Explique moi mieux ça :

    Je voudrais pouvoir faire plusieurs boucles une avec les identifiant (les chiffres à gauche), une autre qui me génère un jour un jour comme dans l'image.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    En fait mon professeur tuteur est intervenu est m'a fait changer de tache je dois juste maintenant afficher une requête sql dans un fichier excel.
    Je m'excuse de ne pas avoir mis à jour le topic et je ne pouvais plus éditer mon post.

    Mais rencontrant d'autre soucis je me permet de continuer de poster dans cette discussion au lieu d'en créer une nouvelle:

    j'ai réussis afficher ma requête dans le fichier excel mais maintenant je souhaiterais ajouter une formule : =NB.SI(AA:AA;"*accueil*"),
    mais PHPExcel de semble pas vouloir la traiter, on m'a dit de voir si en VO elle passait j'ai donc essayé avec COUNTIF mais j'obtiens le même résultat.

    je voudrais aussi alléger mon code dont en voici une partie
    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
    $sheet->setCellValueByColumnAndRow(0,1,'identifiant' );
                    $sheet->setCellValueByColumnAndRow(1,1,'code' );
                    $sheet->setCellValueByColumnAndRow(2,1,'sexe' );
                    $sheet->setCellValueByColumnAndRow(3,1,'age' );
                    $sheet->setCellValueByColumnAndRow(4,1,'composition' );
                    $sheet->setCellValueByColumnAndRow(5,1,'nombreEnfants_3ans' );
                    $sheet->setCellValueByColumnAndRow(6,1,'nombreEnfants_matpri' );
                    $sheet->setCellValueByColumnAndRow(7,1,'nombreEnfants_sec' );
                    $sheet->setCellValueByColumnAndRow(8,1,'nombreTotalEnfants' );
                    $sheet->setCellValueByColumnAndRow(9,1,'modeGardeActuel' );
                    $sheet->setCellValueByColumnAndRow(10,1,'depose' );
                    $sheet->setCellValueByColumnAndRow(11,1,'organisation' );
                    $sheet->setCellValueByColumnAndRow(12,1,'choixModeGarde' );
                    $sheet->setCellValueByColumnAndRow(13,1,'employeur' );
                    $sheet->setCellValueByColumnAndRow(14,1,'raison' );
                    $sheet->setCellValueByColumnAndRow(15,1,'maniere' );
                    $sheet->setCellValueByColumnAndRow(16,1,'horairesLundi' );
                    $sheet->setCellValueByColumnAndRow(17,1,'horairesMardi' );
                    $sheet->setCellValueByColumnAndRow(18,1,'horairesMercredi' );
                    $sheet->setCellValueByColumnAndRow(19,1,'horairesJeudi' );
                    $sheet->setCellValueByColumnAndRow(20,1,'horairesVendredi' );
                    $sheet->setCellValueByColumnAndRow(21,1,'horairesLundiP' );
                    $sheet->setCellValueByColumnAndRow(22,1,'horairesMardiP' );
                    $sheet->setCellValueByColumnAndRow(23,1,'horairesMercrediP' );
                    $sheet->setCellValueByColumnAndRow(24,1,'horairesJeudiP' );
                    $sheet->setCellValueByColumnAndRow(25,1,'horairesVendrediP' );
                    $sheet->setCellValueByColumnAndRow(26,1,'attentes' );
                    $sheet->setCellValueByColumnAndRow(27,1,'estivale' );
                    $sheet->setCellValueByColumnAndRow(28,1,'residence' );
                    $sheet->setCellValueByColumnAndRow(29,1,'remarques' );
                    $sheet->setCellValueByColumnAndRow(30,1,'dateHeure' );
     
     
     
                    $ligne = 2;
                    while($data = $req->fetch()){
                            $colonne=0;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['identifiant']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['code']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['sexe']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['age']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['composition']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nombreEnfants_3ans']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nombreEnfants_matpri']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nombreEnfants_sec']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['nombreTotalEnfants']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['modeGardeActuel']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['depose']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['organisation']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['choixModeGarde']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['employeur']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['raison']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['maniere']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesLundi']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesMardi']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesMercredi']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesJeudi']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesVendredi']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesLundiP']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesMardiP']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesMercrediP']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesJeudiP']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['horairesVendrediP']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['attentes']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['estivale']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['residence']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['remarques']);$colonne++;
                            $sheet->setCellValueByColumnAndRow($colonne, $ligne, $data['dateHeure']);$colonne++;
     
     
                            $ligne++;//ligne suivante                                       
                                                    }
    Merci d'avance

  4. #4
    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 je peux voir comment tu essayes de l'intégrer ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    En cherchant sur internet j'étais tombé sur une discussion qui semblais avoir le même problème que moi mais je n'y arrive pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sheet->setCellValue ("AF1" ,'=COUNTIF(AA:AA;"*accueil*")',PHPExcel_Cell_DataType::TYPE_FORMULA);
    j'ai essayé de mettre "*accueil*" dans une variable comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $mot = "*accueil*";
    $sheet->setCellValue ("AF1" ,'=COUNTIF(AA:AA;.$mot)',PHPExcel_Cell_DataType::TYPE_FORMULA);

  6. #6
    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
    AA:AA tu ne comptes qu'une seule cellule ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    AA:AA tu ne comptes qu'une seule cellule ?
    AA:AA permet de prendre la colonne entière.

  8. #8
    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 ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sheet->setCellValue("AF1", "'=COUNTIF(AA:AA;'accueil')'");

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sheet->setCellValue("AF1", "'=COUNTIF(AA:AA;'accueil')'");
    J'obtiens '=COUNTIF(AA:AA;'accueil')'
    en modifiant un peu le code que tu m'a donné j'ai réussi à obtenir '=COUNTIF(AA:AA;"*accuei*")' mais si je retire les apostrophe j'ai la même erreur qu'au début

  10. #10
    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
    La fonction marche dans un fichier quelconque ?

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Oui si je la rentre à la main elle marche sur excel, pas sur libre calc et sur openoffice je n'ai pas essayé.
    La formule devrais normalement me retourner 2 mais là si j'ouvre mon fichier excel qui à été générer excel me dit que le document contient des données illisible et la formule affiche 0, sur libre calc j'obtiens une erreur #508 mais la formule s'affiche et elle est traduite en français. Du coup je sais pas où ça bloque vu qu’apparemment là formule est transmise.

  12. #12
    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
    Tu sais quoi...le séparateur est une virgule et non pas un point virgule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sheet->setCellValue ("AF1" ,'=COUNTIF(AA:AA,"*accueil*")',PHPExcel_Cell_DataType::TYPE_FORMULA);

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Tu sais quoi...le séparateur est une virgule et non pas un point virgule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sheet->setCellValue ("AF1" ,'=COUNTIF(AA:AA,"*accueil*")',PHPExcel_Cell_DataType::TYPE_FORMULA);
    Oh bordel ça marche merci beaucoup!

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

Discussions similaires

  1. [C++ DX9] Plusieurs problêmes (rendu de point et picking)
    Par caparenlive59 dans le forum DirectX
    Réponses: 5
    Dernier message: 13/07/2007, 16h20
  2. Réponses: 8
    Dernier message: 26/06/2007, 17h07
  3. Réponses: 3
    Dernier message: 27/04/2007, 10h29
  4. Réponses: 3
    Dernier message: 14/01/2007, 19h54
  5. Mon Outil de gestion (plusieurs problèmes)
    Par Makaveli33 dans le forum Access
    Réponses: 10
    Dernier message: 11/05/2006, 21h42

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