2 pièce(s) jointe(s)
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:
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();
}
});
}
} |
A savoir que moi j'étais parti sur créer moi-même ma JFrame :mouarf: 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.
Une petite piste pour toi.
Salut,
J'ai une piste pour toi, déjà pour récupére le document tu peux faire
Code:
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é ;)