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] Fonction getHighestDataRow ()


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut [PHPExcel] Fonction getHighestDataRow ()
    Bonjour à tous

    J'ai ajouté depuis peu le framework PHPExcel car j'ai besoin d'inserer une ligne sur une page Excel déjà existant, jusque la aucune problème, lecture et écriture dans le fichier s'effectue correctement cependant il faut que je récupère la dernière ligne vide de mon doc excel afin de ne pas taper n'importe où dans mon doc excel.

    Pour cela j'ai vue qu'il existe la fonction getHighestDataRow () cependant mon fichier fait 1Mo, et la feuille sur la laquelle je travaille contient actuellement 1200 lignes pour 110 colonnes ...

    Ma fonction s'effectue donc très très lentement j'ai du modifié le ini_set afin de vérifier que ma fonction fonctionnais correctement ce qui est le cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    include '../PHPExcel_1.8.0_doc/Classes/PHPExcel.php';
     
    ini_set('max_execution_time', 300);
     
    $objet = new PHPExcel_Reader_Excel2007();
     
    $excel = $objet->load('xxxxx.xlsx');
     
    $high = $excel->setActiveSheetIndex(1)->getHighestDataRow();
     
    echo $high;
    Je ne connais pas la différence entre les 2 mais la fonction getHighestRow est toute aussi lente :/.

    Si quelqu'un connait une fonction qui pourrais s'effectuer plus rapidement je suis preneur, en sachant qu'il suffirait de vérifier uniquement dans la colonne A1 par exemple si la cellule est vide alors toute la ligne sera vide.

    Je vous remercie par avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu n'as pas de trous, parcoure ta colonne A jusqu'à trouver une cellule vide.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    J'y ai pensé, mais je ne trouve pas de fonction sur PHPExcel afin de vérifier si une cellule est vide, j'ai bien pensé à stocker le contenu de ma colonne dans un tableau puis vérifier avec la fonction PHP empty mais le traitement serrait beaucoup trop lent :s

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach ($worksheet->getRowIterator() as $row) {
    				$nrow = $row->getRowIndex();
    				if ($worksheet->getCellByColumnAndRow(0, $nrow)->getValue() == '') {
                                             break;
                                    }
             }
    echo $nrow;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Je te remercie je vais essayer ça

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Le traitement est tout aussi long, je pense que c'est dû à mon fichier Excel :s

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu es sur que c'est cette partie qui est longue ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Je pense étant donné que si je laisse uniquement cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $objet = new PHPExcel_Reader_Excel2007();
     
    $excel = $objet->load('fixxx.xlsx');
    le traitement met plus de 2 minutes ....

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ah oui donc c'est le chargement du fichier qui est long, pas le recherche de la ligne.

    tu peux essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHPExcel_Settings::setCacheStorageMethod(PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2014
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Même grace à cela le chargement du fichier est tout aussi long, je pense que c'est a cause des liaisons avec un autre classeur qui font que ce fichier fait 1Mo et donc qu'il soit si long à charger, ou aussi au "menu deroulant" permettant un choix de valeur saisie, sur la casi totalité des cellules utilisés

Discussions similaires

  1. Execution fonctions exporter fichier pdf PHPExcel sur serveur local ou ftp
    Par odelia dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 02/02/2017, 14h34
  2. [PHPExcel] La fonction SERIE JOUR OUVRE()
    Par edouard.danaradjou dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 05/02/2014, 09h24
  3. [PHPExcel] Je n'arrive pas à le faire fonctioner !
    Par litox dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 27/07/2011, 21h14
  4. [PHPExcel] Agrandir les cellules en fonction de leur contenu
    Par KDZCrew dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/05/2011, 12h08
  5. n'ecrit plus dans les cellules apres ma fonction (PHPExcel)
    Par bender86 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 09/03/2011, 17h04

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