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

Langage PHP Discussion :

date venant d'excel


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut date venant d'excel
    Bonjour,

    plus que débutant en PHP...
    J'ai un fichier .xlsx avec dans la première colonne des dates.
    Ces dates sont croissantes et uniques.
    Je dois lire cette colonne(A) et dès que je trouve la date du jour, sortir les données de la colonne B et C.
    J'arrive à ouvrir mon fichier .xlsx, à lire la première donnée dans la colonne A.
    Quand je fais un 'ECHO' de la valeur évidemment, j'ai le nombre xls qui se cache derrière la date , soit 43080.
    Je sais que c'est le 43080 jour après le 1/1/1900 mais je ne sais pas comment PHP peut me l'afficher correctement?
    Je sais aussi que PHP préfère commencer au 1/1/1970, qu'il y a 25569 jours de différence entre ces deux dates mais pas moyen d'afficher quelque chose de correct ni même de comparer ce nombre avec la date du jour venant de la fonction date() de PHP.
    voici 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
    <?php
    require_once('PHPExcel/Classes/PHPExcel.php');
    $date = date("d/m/Y");
    $heure = date("H");
    $minute = date("i");
    $date_reference = $date;
    $lignes = 0;
    $colonne = 0;
    // Ouvrir un fichier Excel en lecture
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objPHPExcel = $objReader->load("gardes.xlsx");
    //aller sur la feuille active
    $sheet = $objPHPExcel->getActiveSheet() ;
     
    // le fichier xlsx est ouvert
     
    // selon l'heure du moment, on va déterminer si on affiche le jour - 1 ou jour J
     
    if ($heure < 8 OR $heure == 8 AND $minute < 30) 
    	{
    		$date_reference = $date_reference - 1;
    	}
    // on va lire le fichier xls
    $colonne = 'A'; // On choisit de regarder la colonne A
    $lignes = $sheet->getHighestRow(); // Dans notre excel on va récupérer le numero de la dernière ligne remplis
    for ($ligne = 2; $ligne <= $lignes; $ligne++) { // Pour chaque ligne jusqu'a la dernière on récupère la cellule
     
        $cell = $sheet->getCell($colonne.$ligne);
        $cell = $cell - 1;
        echo $cell;
    //    echo date('d/m/Y', ($cell));
        if($cell == $date_reference) 
        {	
        	echo 'bonjour';
        	echo $ligne;
        	echo 'fin';
     
        }	
    }
    merci d'avance pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une recherche m'a pris moins de 2 nimutes : "php convertir date excel"

    Une réponse ici :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $iNbDay = X; //remplace X par la variable qui contient ta date extraite d'excel, donc ton nombre de jours. 
    $oDate = DateTime::createFromFormat('d/m/Y', '01/01/1900'); 
    $oDate->add(new DateInterval('P'.$iNbDay.'D')); 
    echo $oDate->format('d/m/Y'); //Affiche ta date au format d/m/Y

    voir : PHP - La classe DateTime

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    Bonjour,
    merci pour votre réponse éclair
    effectivement, ce code m'avait échappé.
    par contre ça me renvoie la date de mon fichier .xls mais + 2 jours???

    Bàv,

    david

  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
    Par défaut
    il y a des méthodes directs avec PHPExcel pour formater la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = PHPExcel_Style_NumberFormat::toFormattedString($cell->getValue(), 'YYYY-MM-DD HH:i:ss');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 46
    Par défaut
    Super, cette méthode fonctionne.
    Il me reste encore un soucis avec ces dates.
    J'ai une variable $date qui est alimentée par la fonction PHP date().
    $date = date(d/m/Y);
    Je souhaite comparer cette variable avec la date qui vient maintenant de votre fonction PHPExcel qui a le même format (d/m/Y)
    Quand je fais ma comparaison, je n'obtiens jamais l'équivalence???
    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
    <?php
    require_once('PHPExcel/Classes/PHPExcel.php');
    $date = date("d/m/Y");
    $heure = date("H");
    $minute = date("i");
    $date_reference = $date;
    $lignes = 0;
    $colonne = 0;
    // Ouvrir un fichier Excel en lecture
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objPHPExcel = $objReader->load("gardes.xlsx");
    //aller sur la feuille active
    $sheet = $objPHPExcel->getActiveSheet() ;
     
    // le fichier xlsx est ouvert
     
    // selon l'heure du moment, on va déterminer si on affiche le jour - 1 ou jour J
     
    if ($heure < 8 OR $heure == 8 AND $minute < 30) 
    	{
    		$date_reference = $date_reference - 1;
    	}
    // on va lire le fichier xls
    $colonne = 'A'; // On choisit de regarder la colonne A
    $lignes = $sheet->getHighestRow(); // Dans notre excel on va récupérer le numero de la dernière ligne remplis
    for ($ligne = 2; $ligne <= $lignes; $ligne++) { // Pour chaque ligne jusqu'a la dernière on récupère la cellule
     
    	$cell = $sheet->getCell($colonne.$ligne);
    	$oDate = PHPExcel_Style_NumberFormat::toFormattedString($cell->getValue(), 'd/m/Y'); 
    	echo $oDate;
        echo $date_reference;
        echo '<br/>';
        if($oDate = $date_reference) 
        {	
        	echo 'bonjour';
        	echo $ligne;
        	echo 'fin';
     
        }	
    }
    Dans le code ci-dessus, c'est le dernier IF qui ne fonctionne pas??
    Merci d'avance,

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        if($oDate = $date_reference)
    Ceci n'est pas une comparaison (== ou ===), mais une affectation (=).

    D'autre part, comparer des dates n'est pas si simple : DateTime::diff

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

Discussions similaires

  1. [VBA-E] Format date SAP vers Excel
    Par Eva_75 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2007, 14h38
  2. [Import] [2000] Importer des données venant d'excel
    Par DamKre dans le forum VBA Access
    Réponses: 27
    Dernier message: 05/06/2007, 12h38
  3. mise à jour de 2 tables venant d'excel
    Par pat1545 dans le forum Access
    Réponses: 4
    Dernier message: 17/07/2006, 16h58
  4. [VBA-E] Compatibilité de Date dans VBA Excel
    Par dorschner dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/05/2006, 19h25
  5. Convertir une date au format excel en datetime SQL server
    Par ALLB dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/07/2004, 11h28

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