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

API standards et tierces Java Discussion :

JXL - Problème de décimales


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut JXL - Problème de décimales
    Bonjour,

    Pour parser un fichier excel, j'utilise l'api JXL. Dans mon fichier excel, j'ai des nombres à x décimales. Je veux toutes ces décimales, et sous forme de string, pour éviter les problèmes d'imprécision des doubles.

    Pour récupérer ma valeur je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cell = sheet.getCell("C3");
    mastring = cell.getContents();
    Les cellules de ma feuille excel sont en format texte, mais jxl me récupère des NumberRecord, d'une part, et d'autre part le getContents ne me prends que les 3 premières décimales.

    Est ce que qqun a une idée pour gérer simplement récupérer un chiffre au format texte sans etre tronqué de partout ?

    Merci d'avance
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  2. #2
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Points : 11
    Points
    11
    Par défaut
    Bonjour, je ne connais pas bien cette API mais je peux toujours te donner un petit coup de main.

    La méthode getContents() retourne un String mais tronque le contenu de la cellule si j'ai bien compris...

    D'après ma rapide recherche sur la doc de l'api, il ne semble pas qu'il y ait d'autres fonctions pour récupérer un string.

    Par contre il existe la fonction "getCellFormat()" pour récupérer le format de la cellule. Il doit être possible de vérifier si le contenu de la cellule est un décimal (NumberFormat) ou autre et de là récupérer la totalité de la cellule.

    Exemple: Fonction qui copie le contenu d'une cellule dans une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for (int i = 0 ; i < numrows ; i++)
      {
        for (int j = 0 ; j < numcols ; j++)
        {
          readCell = sheet.getCell(i, j);
          newCell = readCell.copyTo(i, j);
          readFormat = readCell.getCellFormat();
          newFormat = new WritableCellFormat(readFormat);
          newCell.setCellFormat(newFormat);
          newSheet.add(newCell);
        }
      }
    Source: http://jexcelapi.sourceforge.net/resources/faq/

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 41
    Points : 27
    Points
    27
    Par défaut
    salut Faiche,

    J'ai exactement le même pb! j'ai un fichier excel où les cellules sont au format standart, avec des nombres decimaux à plusieurs chiffres apres la virgules...

    et l'api tronque avec la méthode getContents()...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for(int i = 1; i < 3; i++){
                for(int j = 0; j < sheet.getColumns(); j++){
                    if (sheet.getCell(j, i).getType() == CellType.NUMBER){
                        nc = (NumberCell) sheet.getCell(j, i);
                        System.out.println("a "+((NumberCell) sheet.getCell(j,i)).getValue()+" "+sheet.getCell(j, i).getContents());
                        System.out.println(((NumberCell)sheet.getCell(j,i)).getContents());
                        System.out.println(((NumberCell)sheet.getCell(j,i)).getNumberFormat());
                       }
                }
            }
    resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    a 1.0 1
    1
    java.text.DecimalFormat@674dc
     
    a -6.598E-4 -0,001
    -0,001
    java.text.DecimalFormat@674dc
     
    a 1.771E-4 0
    0
    java.text.DecimalFormat@674dc
    j'ai essayé de faire comme ça :

    si je trouve une virgule dans le "sheet.getCell(j, i).getContents()" je garde le resultat avec NumberCell sinon avec getContents mais inexplicalblement, le troisième exemple renvoi 0....

Discussions similaires

  1. [Conception] Problème de décimales Access>PHP
    Par LadyArwen dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 04/01/2006, 15h47
  2. [FLASH MX2004] Problème de décimales
    Par stip dans le forum Flash
    Réponses: 3
    Dernier message: 15/07/2005, 23h45
  3. [FLASH MX] Problème de décimale avec euro
    Par yoda_style dans le forum Flash
    Réponses: 7
    Dernier message: 21/05/2005, 04h14
  4. [CR8] Problème de décimales avec Centura
    Par ccquick dans le forum SAP Crystal Reports
    Réponses: 13
    Dernier message: 05/10/2004, 10h46
  5. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24

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