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 :
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 :
Puis en cliquant sur "Open a file" :
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.
Partager