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

Documents Java Discussion :

[POI] Problème de lecture d'une cellule de type date


Sujet :

Documents Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut [POI] Problème de lecture d'une cellule de type date
    Bonjour
    je travaille sur une application java ( netBeans ) avec la bibliothèque POI., et je dois lire
    le contenu d'une cellule dans un fichier excel et l'insérer dans une base de données .j'ai un problème:mon fichier excel contient des cellules de la forme "jj/MM/aaaa" Je doit la lire en tant que chaine de caractère, mais cela me donne 42005.0 comment convertir cette valeur dans la forme "jj/MM/aaaa"?
    j'ai essayer ce code mais reste le meme probléme

    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
    try{
     
            POIFSFileSystem fs = new POIFSFileSystem(new      FileInputStream("D:/workSpaceStage/Excel/Classeur2.xls"));
            HSSFWorkbook wb = new HSSFWorkbook(fs);
     
            HSSFSheet sheet = wb.getSheetAt(0);//onglet 0
            Iterator rows = sheet.rowIterator();
             HSSFRow   row = (HSSFRow) rows.next();
     
            while (rows.hasNext()){
              ListData.clear();
     
                row = (HSSFRow) rows.next();
              Iterator cells = row.cellIterator();
     
              while(cells.hasNext()){
     
     
                 HSSFCell  cell = (HSSFCell) cells.next();
     
                if(HSSFCell.CELL_TYPE_NUMERIC== cell.getCellType())
     
              ListData.add( Double.toString(cell.getNumericCellValue()));
     
              else 
              if (HSSFCell.CELL_TYPE_STRING == cell.getCellType())
     
                     ListData.add(cell.getRichStringCellValue().getString());
                else
              if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK)
                          ListData.add("");
                else
     
    {
                     java.util.Date maDate = cell.getDateCellValue();
       DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
       maDateEnChaine = df.format(maDate);
        ListData.add( maDateEnChaine);
    }
     
     
            }

  2. #2
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Bonjour

    Un champ date est considéré par excel comme l'interprétation à l'affichage d'un champ numérique (du coup, on passe dans ton premier cas)

    Solution : regarde la méthode de la classe http://poi.apache.org/apidocs/org/ap...FDateUtil.html qui s'appelle isCellDateFormatted(Cell cell) et qui te permettra ensuite de récupérer la bonne valeur avec la méthode getJavaDate(double date) à laquelle tu pourras passer ta valeur numérique


    Sinon, tu dois aussi avec une méthode cell.getDateCellValue()...
    Je ne suis pas mort, j'ai du travail !

  3. #3
    Candidat au Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Salut ...
    désolé ,vous voulez dire inclure le type date dans le premier cas dans mon code comme suit !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(HSSFCell.CELL_TYPE_NUMERIC== cell.getCellType()){
     
              ListData.add( Double.toString(cell.getNumericCellValue()));
     
     
                   if(HSSFDateUtil.isCellDateFormatted(cell) )
     
                    maDate = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());
                   DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
       maDateEnChaine = df.format(maDate);
        ListData.add( maDateEnChaine);
                }

Discussions similaires

  1. [POI] Lecture d'une cellule de type date
    Par le_misterioso dans le forum Documents
    Réponses: 11
    Dernier message: 31/08/2010, 21h34
  2. JTable : édition d'une cellule de type Date
    Par SheikYerbouti dans le forum Composants
    Réponses: 5
    Dernier message: 08/12/2007, 08h50
  3. [POI] Problème de lecture des fichiers Word
    Par Dari dans le forum Documents
    Réponses: 9
    Dernier message: 05/07/2007, 14h08
  4. [POI]Problème de lecture des cellules vides
    Par ng.phung dans le forum Documents
    Réponses: 1
    Dernier message: 02/05/2007, 14h45
  5. [VBA] Problème récup texte d'une cellule dans un tableau
    Par Marco le Pouillot dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/01/2006, 17h06

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