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

NetBeans Java Discussion :

Importer les données d'un fichier excel dans une combobox


Sujet :

NetBeans Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Importer les données d'un fichier excel dans une combobox
    Bonjour,

    Je souhaiterai savoir s'il était possible d'intégrer des fichiers excel dans des combobox sur Netbeans GUI.

    Merci d'avance de votre aide

  2. #2
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Hello,

    il faut le faire à la main. cf. ApachePOI pour lire des fichiers Excel

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Merci Pill_S de ta réponse si rapide,

    J'ai utilise Apache POI, comme tu me le conseilles.

    Mais en fait, pour appeler mon fichier excel je lui dit "au clic de la combobox, tu vas chercher le fichier excel à tel endroit". Il va bien me chercher mon fichier, m'affiche tout mon fichier excel dans une jTable dynamique.

    Le problème est que je voudrait qu'il importe le fichier que dans la combobox. Mais à chaque fois que je clique sur le combobox j'ai tout le fichier excel qui se ré-affiche dans la table.

    Comment faire pour qu'il n'y ait pas de doublons (dans la table) et que seul le choix de l'utilisateur soit afficher dans la table. Et pas tout le fichier...

    Merci de votre aide

  4. #4
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Tu devrais ne charger le fichier excel qu'une seule fois, à l'initialisation de la combobox.

    Montre le code, tu t'y prends peut-être mal...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    J'ai modifié mon message précédent, car je me suis trompé, le fichier excel ne s'affiche pas du tout dans la combo, mais juste dans la table.

    Voici le code, lorsque je clique sur la combobox :
    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
     
     
     private void comboActionPerformed(java.awt.event.ActionEvent evt) {                                                    
             try
            {
                Workbook excel = Workbook.getWorkbook(new File ("C:\\Users\\test.xls"));
     
                //pour changer de feuille sur excel
                for (int onglet_feuille =0 ; onglet_feuille < excel.getNumberOfSheets() ; onglet_feuille++)
                {
                    Sheet feuille = excel.getSheet(onglet_feuille);
                    int colonne = feuille.getColumns(); //colonnes totales
                    int ligne = feuille.getRows();      //lignes totales
     
                    Object[] valeurs = new Object[colonne];
     
                    for (int une_ligne=0 ; une_ligne<ligne ; une_ligne++)
                    {
     
                      for (int une_colonne=0 ; une_colonne <colonne ; une_colonne++)
                        {
     
                            if (une_ligne == 0)
                            {
                                //on regarde ce qu'il y a à la 1ère la ligne
                                model_1.addColumn(feuille.getCell(une_colonne, 0).getContents());  
                            }
     
                            valeurs[une_colonne] = feuille.getCell(une_colonne, une_ligne).getContents();
                        }
                        model_1.addRow(valeurs);
                    }
     
                }
     
                model_1.removeRow(0);
                excel.close();
            }
     
     
            catch (IOException | BiffException ex)
            {
                Logger.getLogger(Graph.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    Je voudrais donc, que le fichier excel se charge directement dans la combobox.

    Merci d'avance de votre aide.

  6. #6
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Oui, rien ne te semble bizarre?

    Pourquoi est-ce que tu attend une action sur la combo pour... essayer de charger son contenu? PS: je pars du postulat que la méthode "comboActionPerformed" est appelée par le listener attaché à une action sur la combo...

    Le chargement doit s'effectuer lorsque tu construits & initialise la combo, donc, pas loin du "new JComboBox"...
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Ça marche du feu de dieu, merci Pill_S !! Depuis le début je me focalisais sur le fait qu'il fallait que ça soit sur une action de la combobox, bref, ça marche mieux

    J'ai à présent changé de place le chargement de mon fichier excel. Tout marche presque bien.
    J'ai changé mon initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    model = new DefaultComboBoxModel();
    combo.setModel(model);
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    model = new DefaultTableModel();
    table.setModel(model);
    Puis, comme j'ai changé en combo au lieu de la table, je devais changer les "addRow", "addColumn" et "removeRow" en "addElement et "removeElement"...
    On voit la 1ère ligne de mon document excel, puis après on compte le bon nombre d'élément de mon document excel dans la combobox mais au lieu d'avoir "fraise", "framboise", j'ai : "[Ljava.lang.Object;@1672c01".

    J'ai fais des recherches sur l'erreur. J'ai vu qu'il fallait que j'ajoute ".getClass()". Mais même, en ajoutant cela, j'ai toujours des erreurs.. Je dois mal m'y prendre.. J'ai maintenant comme erreur : "[Ljava.lang.Object;@"

    J'ai aussi vu que je devais ajouter un "ma_classe.class.getName()" mais je le met déjà dans l'exception, donc le compilateur n'est pas content...


    Merci de votre aide

  8. #8
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Hello,

    euh, pas tout compris, tu mélanges pas mal de choses là il me semble...

    pour les addXxx et removeXxx, ok soit, je vais pas plonger dans tous les détails du truc... par contre ton problème de "[Ljava.lang.Object;@" machin, c'est juste parce que l'objet est un tableau et que ça, c'est la version "toString" d'un tableau.
    Pour le maclass.class.getName, rien ne t'empeche d'en mettre de partout, même si je doute que cela soit vraiment ce que tu veux faire...

    on va reprendre: il te faut une méthode qui charge les données du fichier excel. il te faut aussi une combobox. Pour alimenter la liste des choix de la combo, tu as plusieurs choix, à savoir utiliser un ComboBoxModel (choix le plus puissant mais aussi le plus compliqué), un Vector ou un tableau d'objets. Je te propose d'utiliser le tableau d'objets, c'est le plus simple si tu n'as pas besoin de la puissance apportée par les autres options.

    Donc ça amène un code de la forme suivante:

    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
     
    public class SomeClassName {
      private Object[] getOptionsFromExcel() {
        List<Object> options = new LinkedList<Object>();
     
        // ici, lire le contenu du fichier Excel, et ajouter 
        // chaque valeur désirée à la liste "options" (sous forme de string ou 
        // autres, mais pas de tableau... fait bien attention aux signatures des 
        // méthodes que tu utilises pour lire le fichier excel, je parie que certaines 
        // renvoient des tableaux d'objets au lieu des strings que tu attends.)
     
        // on retourne la liste des options sous forme de tableau
        return options.toArray();
      }
     
      private JComboBox jComboBox;
      private JComboBox getJComboBox() {
        if(jComboBox==null) {
          // initialisation de la combobox. la 1ère étape est de récupérer les options qui seront disponible
          Object[] options = getOptionsFromExcel();
          // on construit la combo avec les options désirées
          jComboBox = new JComboBox(options);
     
          // on continue l'initialisation des autres propriétés
          jComboBox.addActionListener(...);
        }
     
        return jComboBox;
      }
    ...
    }
    Voilà, essaie ça et reviens (avec le code complet) si jamais ça marche pas

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Trouvéééé, il suffisait de mettre un ".toString()"

  10. #10
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Citation Envoyé par deeeel Voir le message
    Trouvéééé, il suffisait de mettre un ".toString()"
    hum ça m'étonnerait, toString est implicitement utilisé pour afficher une option dans une combobox lorsqu'aucun autre moyen d'affichage n'est disponible (ie. n'est pas une instance de JComponent)...

    tu as sûrement fait autre chose pour que cela marche
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Oh, je viens seulement de voir ta réponse, merci beaucoup Pill_S pour toute l'aide que tu m'apportes.

    Je vais t'embêter encore un peu, je souhaiterai à présent ajouter le choix sélectionné, par l'utilisateur, dans la combobox (et alimentée par le fichier excel) dans une table.
    J'ai mis ça dans un "ActionPerformed" de la combobox et j'ai commencé avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //si quelque chose est sélectionné
    if (combo.getSelectedItem() == "")
            model_1.addElement(new Object[] 
               { 
                   combo.getSelectedItem() //j'ai un problème sur cette ligne, je voudrais qu'il mette le choix de la combo dans la table
               });

    Merci pour l'aide

  12. #12
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    regarde du côté de la doc de JTable, et notament get/setModel, et setValueAt, tu devrais comprendre facilement comment ça se passe

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    D'accord

    Alors finalement, au lieu d'utiliser le "ActionPerformed", j'ai utilisé un "MouseClicked" et j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     private void comboMouseClicked(java.awt.event.MouseEvent evt) {                                                 
            DefaultTableModel model = (DefaultTableModel) tableau.getModel();
     
            model.getValueAt(tableau.getSelectedRow(), 0).toString();
     
        }
    J'ai l'impression de n'être pas loin du compte. Est-ce que c'est une illusion ?

  14. #14
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    mouais... t'es quand même pas tout proche non plus...

    mouselistener c'est pas trop ça... tu veux vraiment qu'il se passe des trucs à chaque fois que tu cliques sur la combo (même sans qu'il y ait de sélection ou autres?)... pour t'en convaincre, mets un System.out.println("combo click"); dans le listener, tu verras que c'est exécuté bien trop souvent par rapport à ton besoin...

    ensuite, getValueAt, ça va rien faire à la jtable... faut utiliser setValueAt, qui est une opération de modification de l'état de la jtable (get, en java, c'est toujours et uniquement, de la lecture)

    Essaie ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void actionPerformed(ActionEvent ae) {
        Object selectedOption = ((JComboBox) ae.getSource()).getSelectedItem();
        tableau.getModel().setValueAt(selectedOption, tableau.getSelectedRow(), 0);
    }
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    C'est géniaaaaal Merci beaucoup Pill_S pour cette aide précieuse.

    Pour ceux qui passent par là, je conseille :


    Merci encore Pill_S

    P.S : j'adore ta signature "Ne renonce jamais" ça me donnais du courage, haha. (Merci Pill_S)

  16. #16
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Cool content que ça fonctionne
    Citation Envoyé par deeeel Voir le message
    P.S : j'adore ta signature "Ne renonce jamais" ça me donnais du courage
    oui c'est là pour ça ^^

    bon courage pour la suite, et n'hésite pas à revenir en cas de souci
    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Hello Pill_S,

    Il semblerait que je sois déjà de retour, haha.

    Je ne savais pas si je pouvais continuer dans le même topic ou pas, vu que c'est un peu la continuation... Alors, j'ai préféré en créer un nouveau...

    Je remet ma question :
    http://www.developpez.net/forums/d14...tir-jcombobox/


    Merci d'avance pour tout

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/08/2010, 22h48
  2. Réponses: 3
    Dernier message: 20/04/2010, 10h31
  3. [MySQL] Importer les données d'un fichier CSV dans une base de données
    Par joueur dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/11/2008, 12h59
  4. Importer les données d'un fichier excel dans une table
    Par dams95190 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/12/2007, 11h35
  5. Réponses: 3
    Dernier message: 27/07/2007, 14h06

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