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 :

Sélectionner une feuille d'un fichier Excel sélectionné via un FileChooser


Sujet :

Documents Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Par défaut Sélectionner une feuille d'un fichier Excel sélectionné via un FileChooser
    Bonjour à tous,
    J'espère que le titre est assez clair, mais j'vais développer mon problème ci-dessous.

    J'ai un projet qui me demande de :
    1/ sélectionner n'importe quel fichier excel à partir d'une fenêtre de dialogue standard (type objet FSO)
    2/ sélectionner la feuille au choix de l'opérateur

    Pourquoi faire, me direz-vous éventuellement ?
    3/ récupérer de cette feuille le nom de la colonne contenant les informations qui intéressent l'opérateur (en fonction d'une liste évolutive de noms de colonnes, définie dans un fichier *.ini)
    4/ les informations qui sont intéressantes devront être décomposées en trois colonnes (préfixe, racine, suffixe). Ces trois colonnes seront positionnées en colonne A, B et C.


    Bon. Ayant un projet comme celui-ci à réaliser, je ne sais pas comment un programmeur expérimenté démarrerait (hormis la phase "Faire un organigramme de mon algorithme"), mais j'ai décidé de partir sur la doc d'Oracle en Java pour prendre un code qui me propose directement une fenêtre de dialogue standard, comme ceci :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    package test;
     
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
     
    import javax.swing.*;
    import javax.swing.SwingUtilities;
    import javax.swing.filechooser.*;
     
     
    @SuppressWarnings("serial")
    public class FileChooser extends JPanel implements ActionListener {
     
        static private final String newline = "\n";
        JButton openButton; //avant il y avait "saveButtoon" avec.
        JTextArea log;
        JFileChooser fc;
     
        public FileChooser() {
            super(new BorderLayout());
     
            log = new JTextArea(5,20);
            log.setMargin(new Insets(2,2,2,2));
            log.setEditable(false);
            JScrollPane logScrollPane = new JScrollPane(log);
     
            fc = new JFileChooser(); //créer un sélecteur de fichier.
     
     
            openButton = new JButton("Open a File...");
            openButton.addActionListener(this);
     
            JPanel buttonPanel = new JPanel();
            buttonPanel.add(openButton);
     
            add(buttonPanel, BorderLayout.PAGE_START);
            add(logScrollPane, BorderLayout.CENTER);
        }
     
        public void actionPerformed(ActionEvent e) {
     
            if (e.getSource() == openButton) {
                int returnVal = fc.showOpenDialog(FileChooser.this);
     
                if (returnVal == JFileChooser.APPROVE_OPTION) {
                    File file = fc.getSelectedFile();
     
                    log.append("Opening: " + file.getName() + "." + newline);
                } else {
                    log.append("Open command cancelled by user." + newline);
                }
                log.setCaretPosition(log.getDocument().getLength());
     
            } 
        }
     
        /** Returns an ImageIcon, or null if the path was invalid. */
        protected static ImageIcon createImageIcon(String path) {
            java.net.URL imgURL = FileChooser.class.getResource(path);
            if (imgURL != null) {
                return new ImageIcon(imgURL);
            } else {
                System.err.println("Couldn't find file: " + path);
                return null;
            }
        }
     
        /**
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event dispatch thread.
         */
        private static void createAndShowGUI() {
            //Create and set up the window.
            JFrame frame = new JFrame("Ouvrir un fichier Excel");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //termine le processus lorsqu'on clique sur la croix rouge.
     
            frame.add(new FileChooser());
     
            frame.pack();
            frame.setVisible(true);
            frame.setLocationRelativeTo(null);
        }
     
        public static void main(String[] args) {
     
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
     
                    UIManager.put("swing.boldMetal", Boolean.FALSE); 
                    createAndShowGUI();
                }
            });
        }
    }
    Ce qui me donne ceci :

    Nom : FileChooserDemo2Metal.png
Affichages : 1785
Taille : 9,3 Ko

    Puis en cliquant sur "Open a file" :

    Nom : FileChooserOpenMetal.png
Affichages : 2012
Taille : 16,2 Ko


    A savoir que moi j'étais parti sur créer moi-même ma JFrame et on m'a expliqué que je n'allais pas ré-inventer le Java non plus, autant utiliser ce qui existe déjà...
    Bref. Outre le fait que je ne comprends que la moitié des éléments de ce code...

    J'aimerais savoir comment il est possible de faire en sorte que le programme, après avoir sélectionné le fichier .xls, demande à l'opérateur de sélectionner une feuille du classeur ?
    Et comment faire en sorte que l'opérateur ne puisse sélectionner que des fichiers .xls (et pas un .txt ou .png) ?

    Merci par avance de votre aide, j'suis perdu dans les méandres d'internet et de pages de codeurs qui proposent des choses HYPER COMPLIQUÉES qui ne sont pas du tout à ma portée, pour résoudre mon problème.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 46
    Par défaut Une petite piste pour toi.
    Salut,

    J'ai une piste pour toi, déjà pour récupére le document tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File file = new File("NomDufichier"); //ici tu peux récuperer le nom choisie avec son chemin que tu obtiens avec ton chooser
     
    FileInputStream fis = new FileInputStream(file); //ici tu lis ce fichier
    pour la partie excel je te conseille ce tuto qui est très bien expliqué il te faudras sûrement une API.

    http://jmdoudoux.developpez.com/cour...tion-documents

    Voilà en expérant t'avoir un peu aidé

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Par défaut
    Bonjour Jaythor, et merci de ta réponse !

    Je connais les deux lignes de commande que tu m'as mis ; hélas, mon cahier de charge demande précisément "Créer une application qui permette : 1/ De sélectionner n'importe quel fichier excel à partir d'une fenêtre de dialogue standard (type objet FSO), donc je suis obligé de passer par un code long et compliqué, je le crains x)

    En fait, pour mieux l'expliquer, il faut que l'utilisateur n'est pas besoin de rentrer dans le code pour exécuter le programme, cela doit agir comme si tu faisais "Ouvrir" sous Word.

    Je vais de ce pas lire la doc' que tu m'as envoyé pour l'utilisation d'un API, je t'en remercie o/

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 46
    Par défaut interface
    ok ^^

    Et pour ton interface si tu es assez à l'aise avec java tu peux essayer de voir pour passer vers javaFx depuis le JDK 8 c'est la bibliothèque qui succède swing. Je trouve personnellement le code moins charger et plus clair qu'avec swing le seul problème c'est qu'il demande un niveau technique légèrement plus élevé (mais c'est que mon avis ). Des notions du pattern MVC sont utiles voir nécessaires.

    Amuses-toi bien

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Par défaut
    ... tu m'as perdu là. JDK 8, pattern MVC, déjà que j'connaissais pas la bibliothèque swing avant de commencer ce programme

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2016
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2016
    Messages : 46
    Par défaut Quelques explications
    Ok pas de problème je vais t'expliqer quelques trucs .

    Alors JDK :

    => Java Developpement Kit : autrement dit c'est ce que tu as besoin pour dev en java (je prends des raccourcis mais c'est pas loin) on est actuellement à la version 8 donc JDK 8 CQFD

    https://fr.wikipedia.org/wiki/Java_Development_Kit



    MVC pattern :

    => Model View Controller (ou Modèle Vue Controlleur en français) est un modèle de conception d'application qui s'applique aux interfaces graphiques, le principe de ce modèle est de séparer les actions des utilisateurs avec les données globale de l'application.

    En outre un pattern (modèle conception) est une logique de développement, un ensemble de bonnes pratiques utilisées dans des cas spécifiques, c'est comme suivre un patron pour les couturiers tu vois ?

    https://fr.wikipedia.org/wiki/Mod%C3...ontr%C3%B4leur


    Donc pour le coup reste sur swing ^^



    En espérant t'avoir éclairé un petit peu plus

Discussions similaires

  1. [XL-2007] importer une feuille d'un fichier Excel
    Par dodo69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/06/2021, 15h40
  2. Réponses: 12
    Dernier message: 22/03/2010, 14h07
  3. Réponses: 12
    Dernier message: 27/01/2010, 08h59
  4. Réponses: 2
    Dernier message: 02/12/2008, 13h15
  5. renommer une feuille d'un fichier excel depuis Access en VBA
    Par alexkickstand dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/08/2007, 17h55

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