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 :

[JOpenDocument] Récupérer float d'un ods


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Par défaut [JOpenDocument] Récupérer float d'un ods
    Bonjour,

    Je suis nouveau dans le merveilleux monde de Java. Je souhaite développer un morceau de code qui travaille sur un fichier ods (type openoffice calc) : ajouter des colonnes, insérer des graphiques, ...
    Je me suis tourné vers JOpenDocument et pour l'instant je cherche bêtement à récupérer une valeur du tableur. Il y a bien getValue mais il me renvoie un objet et je ne peux pas faire de calculs avec ça... Y a-t-il moyen de récupérer une valeur sous forme de float ??

    Merci d'avance

    Bonne journée

    CR

  2. #2
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    Il faut que tu vérifie le type puis que tu cast en BigDecimal si jamais c'est un FLOAT.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    switch (cell.getValueType()) {
    		case STRING:
    		logger.info(cell.getTextValue());
    		break;
    		case FLOAT:
    		final BigDecimal result = (BigDecimal) cell.getValue();
    		logger.info("" + result);
    		break;
     
                    ...
    		default:
    		break;
    	}

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Par défaut
    Merci Ceddoc !

    ça a l'air de fonctionner.
    Mais une interrogation subsiste, quand je fais un getValueType de ma cellule, il me répond "FLOAT". Pourtant lorsque que je créé une variable "val" de type float, je ne parviens pas à y mettre la valeur de la cellule. J'ai le message d'erreur suivant : "Cannot convert from Object to Float". Je ne comprends pas... Aurais-tu une explication ??

    CR

  4. #4
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    Il faut que tu joue avec les méthodes statique de Float etc... Si tu reprends mon exemple de tout à l'heure, si tu veux ton résultat sous forme de float il faut faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    final BigDecimal result = (BigDecimal) cell.getValue();
    final float value = Float.parseFloat(result.toString());
    logger.info("" + value);

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Par défaut
    Désolé je me suis fait mal comprendre.
    Ta solution fonctionne très bien dans mon code, c'est bon.
    Je voulais juste comprendre pourquoi le getValueType me renvoie un "Float" et malgré tout je ne peux pas ranger la valeur retournée dans une variable Float.
    Mais ce n'est pas une question existentielle

  6. #6
    Membre chevronné Avatar de Ceddoc
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 493
    Par défaut
    Ah alors, je n'ai pas la réponse exacte, mais pour moi les développeurs ont rangé tous les nombres dans "FLOAT", ce qui n'est pas tout à fait faux, derrière leur terme "FLOAT" ils rangent tous ce que contient BigDecimal, qui lui même contient tous les nombres. Une logique comme ça...

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

Discussions similaires

  1. Récupérer valeur de type float d'un Cedit
    Par Trunks dans le forum MFC
    Réponses: 4
    Dernier message: 03/12/2014, 22h51
  2. Création macro variable : récupérer sortie ODS
    Par geofnich dans le forum Macro
    Réponses: 3
    Dernier message: 04/05/2010, 18h34
  3. récupérer valeur d'un double dans 2 float
    Par psycho_xn dans le forum Général Java
    Réponses: 23
    Dernier message: 07/12/2009, 13h43
  4. Récupérer poid fort / faible d'un float
    Par Nergaahl dans le forum C++
    Réponses: 5
    Dernier message: 13/04/2006, 17h15
  5. Récupérer des floats à partir d'une string
    Par hamster dans le forum SL & STL
    Réponses: 8
    Dernier message: 09/06/2005, 08h10

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