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 :

[Excel] Lecture d'une cellule date


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 36
    Par défaut [Excel] Lecture d'une cellule date
    Bonjour,

    alors, je lis grace a mon code php un fichier excel et je l'affiche tout simplement, sauf que les dates comme par exemple '16/05/2004' sont retranscrites sous cette forme '38123', c'est donc un problème de format !
    savez vous comment je peux modifier cela ?

    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
    <?php	// Code de lecture d'un fichier excel a plusieur colonnes et lignes
     
    	require_once './PHPExcel/Classes/PHPExcel/IOFactory.php';
     
    	// Chargement du fichier Excel
    	$objPHPExcel = PHPExcel_IOFactory::load("TestDate.xls");
     
    	/**
    	* récupération de la première feuille du fichier Excel
    	* @var PHPExcel_Worksheet $sheet
    	*/
    	$sheet = $objPHPExcel->getSheet(0);
     
    	// Afficher la ligne 1, trouver les colonnes qui nous intéressent
    	$ligne = 0;
    	$cpt = 0;
     
    	// On boucle sur les lignes
    	foreach($sheet->getRowIterator() as $row) {
    		// On boucle sur les cellule de la ligne 1
    		foreach ($row->getCellIterator() as $cell) {
    			if ($ligne == 0){
    				$var = $cell->getValue();
     
    				if ($var == 'Code materiel'){			$tab['n26E'] = $cpt;	}
    				if ($var == 'Date Livraison'){			$tab['dLivr'] = $cpt;	}
     
    				$cpt++;
    			}
    		}
    		$ligne++;
    	}
     
     
     
    	// Afficher juste les colonnes que l'on veut !
    	echo '<table border="1">';
    	$ligne = 0;
    	$cpt = 0;
     
    	// On boucle sur les lignes
    	foreach($sheet->getRowIterator() as $row) {
    		echo '<tr>';
    		$cpt_c =0;
     
    		// On boucle sur les cellule de la ligne
    		foreach ($row->getCellIterator() as $cell) {
    			echo '<td>';
    			if ($cpt_c == 32){
    				print_r($cell->getValue());
    				$tab[$ligne]['n26E'] = $cell->getValue();
    			}
     
    			if ($cpt_c == 49){
    				print_r($cell->getValue());
    				$tab[$ligne]['dLivrais'] = $cell->getValue();
    			}
     
    			echo '</td>';
    			$cpt++;
    			$cpt_c++;
    		}
    		echo '</tr>';
    		$ligne++;
    	}
    	echo '</table>';
     
    ?>

  2. #2
    Membre averti
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 36
    Par défaut
    Bon alors j'ai trouvé toute seule, pour ceux que ca interesse :

    j'ai donc mis la date dans la variable $date = $tab[$ligne]['dLivrais'] (ligne 56)

    alors excel renvois un nombre de jour écoulé depuis 1900
    et la fonction mktime de php prend en parametre
    int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
    ie mktime (heure, minute, seconde, mois, jour, annee)

    donc 0 heure, 0 minute, 0 seconde, 1 mois (car on commence au premier mois janvier), $date-1 (c'est notre nombre de jour renvoyer par excel, -1 car excel commence a un et php à 0), 1900 (car c'est l'année a partir de la quelle on veut qu'il compte)

    => mktime(0,0,0,1, $date-1, 1990)
    on obtient le nombre de jour écoulé depuis 1900 mais au format php

    pour mettre notre date sous une forme agréable on utilise la fonction date
    string date ( string $format [, int $timestamp = time() ] )
    ie date(un formatde date, un nombre de jour écoulé)

    donc date("d/m/y", mktime(0,0,0,1, $date-1, 1990));


    et voila il n'y a plus qu'a afficher !

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

Discussions similaires

  1. [POI] Problème de lecture d'une cellule de type date
    Par syrinEn dans le forum Documents
    Réponses: 2
    Dernier message: 29/06/2015, 12h10
  2. Lecture d'une cellule Excel Sans ouvrir Excel
    Par Domino40 dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/10/2012, 09h09
  3. [POI] Lecture d'une cellule de type date
    Par le_misterioso dans le forum Documents
    Réponses: 11
    Dernier message: 31/08/2010, 21h34
  4. Automation d'excel, pb de lecture d'une cellule
    Par titux dans le forum wxWidgets
    Réponses: 0
    Dernier message: 04/08/2008, 10h27
  5. lecture d'une cellule excel pour affichage dans une page web
    Par smartbis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 22/05/2008, 09h33

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