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] Récupérer la valeur d'une formule dans un fichier Excel


Sujet :

Documents Java

  1. #1
    Futur Membre du Club Avatar de foscor
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [POI] Récupérer la valeur d'une formule dans un fichier Excel
    Bonjours et merci de l'attention que vous portez à ce topic,

    Je sollicite votre aide car dans mon programme je récupère les valeurs des cellules d'un fichier Excel à l'aide de POI.

    Mon problème est le suivant :
    Dans mon fichier Excel il y a des cellules qui sont remplis par des formules , or je veux récupérer le résultat de la formule est non là formule en elle même (images ci-dessous).

    Formule :

    Nom : formula.jpg
Affichages : 1889
Taille : 6,0 Ko

    Valeurs :

    Nom : string.jpg
Affichages : 1917
Taille : 16,1 Ko

    Pour celà j'ai essayé la fonction suivante pour récupérer les valeurs :

    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
    public void formulaValue(int y, int i)
    	{
    		Cell cell = sheet.getRow(y).getCell(i);
    		if(cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
    			System.out.println("Formula is " + cell.getCellFormula());
    			switch(cell.getCachedFormulaResultType()) {
    				case Cell.CELL_TYPE_STRING:
    					System.out.println("String Value -> \"" + cell.getRichStringCellValue() + "\"");
    					break;
    				case Cell.CELL_TYPE_NUMERIC:
    					System.out.println("Numeric Value -> " + cell.getNumericCellValue());
    					break;
    				case Cell.CELL_TYPE_BOOLEAN:
    					System.out.println("Boolean Value -> " + cell.getBooleanCellValue());
    					break;
    	        }			
    		}
    	}
    Et c'est là que je suis perdu ... car il m'affiche en console une valeur numérique , alors que c'est une String que je cherche à afficher.

    Est-ce que quelqu'un aurait une idée ?
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
    ...
     
    CellValue cellValue = evaluator.evaluate(cell);
    ...
     
    System.out.println(cellValue.getNumberValue());
    :-)
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  4. #4
    Futur Membre du Club Avatar de foscor
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Ben non justement , dès le début de mon code je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
    			System.out.println("Formula is " + cell.getCellFormula());
    Et ça m'affiche la formule pas sa valeur , et c'est exactement se qu'il y a dans le lien que tu m'as envoyé (puis j'ai déjà beaucoup regardé la doc POI avant de faire ce topic).

    Mais merci de ta réponse

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    As-tu vu cette ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CellValue cellValue = evaluator.evaluate(cell);
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Futur Membre du Club Avatar de foscor
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 6
    Points
    6
    Par défaut ça fonctionne ! :D
    Désolé thierryler , c'était à wax78 que mon message était destiné ^^'

    Et sinon ça fonctionne très bien, j'ai testé sur mon programme est il m'a suffi de changer au code que tu m'as envoyé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(cellValue.getNumberValue());
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(cellValue.getStringValue());


    Donc pour afficher la valeur de mes formules en String, ma fonction est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public void formulaValue(int y, int i)
    	{
    		Cell cell = sheet.getRow(y).getCell(i);
     
    		FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
     
    		CellValue cellValue = evaluator.evaluate(cell);
     
    		if(cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
    			System.out.println("Formula is --> " + cell.getCellFormula()); // La formule
    			System.out.println("Cell formula value is  --> " + cellValue.getStringValue()); // La valeur String de la formule
    		}	
    	}
    Merci beaucoup pour l'aide !

  7. #7
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Points : 12 815
    Points
    12 815
    Par défaut
    J'ai mis à jour mon tuto pour montrer comment faire : http://thierry-leriche-dessirier.dev...inutes/#LIII-C
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  8. #8
    Futur Membre du Club Avatar de foscor
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    J'ai mis à jour mon tuto pour montrer comment faire : http://thierry-leriche-dessirier.dev...inutes/#LIII-C
    Ah cool ! ça c'est une super initiative !

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

Discussions similaires

  1. [WD18] Récupérer la valeur d'une formule dans un fichier Excel
    Par hassane03 dans le forum WinDev
    Réponses: 6
    Dernier message: 15/06/2015, 17h30
  2. [XL-2003] Récupérer le contenu d'une ligne dans un fichier excel (rapidement)
    Par kigrez dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/04/2010, 21h20
  3. Réponses: 1
    Dernier message: 10/04/2010, 07h16
  4. recuperer les valeurs d'une cellule dans un fichier excel
    Par cortex59 dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/04/2008, 13h10
  5. Réponses: 4
    Dernier message: 07/08/2006, 17h01

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