Bonjour,
Je voudrais importer un fichier excel. Est-ce que je dois créer une classe qui comportera les mêmes attributs que les champs du fichier excel ?
Merci d'avance.
Bonjour,
Je voudrais importer un fichier excel. Est-ce que je dois créer une classe qui comportera les mêmes attributs que les champs du fichier excel ?
Merci d'avance.
Salut,
Ça dépend ce que tu veux en faire, mais ça peut être effectivement une bonne idée de faire une classe dont les attributs correspondent aux colonnes dans le fichier excel, chaque ligne étant représentée par une instance de cette classe.
Si c'est juste pour l'afficher simplement dans une JTable, ou l'exporter en CSV, utiliser un ou des tableaux pourra être suffisant. Mais dès que tu voudras aller un peu plus loin, un vrai objet sera moins fastidieux à manipuler, et son usage simplifiera la maintenance en cas d'évolution du fichier Excel.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Merci pour votre réponse;
En fait je dois manipuler les données après donc vous me conseillez de créer une classe avec les attributs des champs du fichier?
Et pour l'importantion des données comment dois je proceder?
Car je vois sur des forums que je peux utilise API POI je ne comprends pas bien
C'est ça. Tu télécharge les jars et tu les inclus dans ton projet, puis tu les intègres au classpath.
Ensuite, tu trouveras des exemples pour lire un fichier excel ici et là. En gros, la lecture d'un fichier Excel, c'est :
- lecture d'un Workbook (classeur) à partir d'un fichier (ça te donne une classe de l'API POI, différente pour un xls et un xlsx, mais que tu manipuler par interface commune ;
- parcours des Sheets (feuilles de calculs), ou sélection d'un Sheet par son nombre...
- parcours des Rows (lignes de chaque Sheet) ;
- parcours des colonnes de chaque row : répupération de cellules (Cell) ;
- pour chaque cellue, en fonction du type, convertir la donnée correspondante pour l'affecter à l'objet de ton modèle.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
j'ai telechargé les jar , je les ai mais dans un dossier "lib" que jai mis dans mon projet mais je ne comprend pas comment ajouter les jar aux path; je suis debutante![]()
Voir ici.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Merci j'ai executé le code, ça ne m'affiche pas d'erreur mais ça ne m'affiche pas les données sur le console.
Voici le code:
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 import java.io.File; import java.io.FileInputStream; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; /** * Lecture fichier Excel avec Apache Poi * @author mesexemples.com */ public class TestReading { public static void main(String []arg) { try { FileInputStream file = new FileInputStream(new File("C:\\Users\\oumou-raby.dia\\Desktop\\RequeteCoefficientdExploitation.xlsx")); // Créer un objet classuer HSSFWorkbook classeur = new HSSFWorkbook(file); //Lire la première feuille de ce classuer HSSFSheet feuille = classeur.getSheetAt(0); // Créer un Itérateur sur la feuille Iterator<Row> rowIterator = feuille.iterator(); while(rowIterator.hasNext()) { Row row = rowIterator.next(); // Lire les colonnes de chaque ligne Iterator<Cell> cellIterator = row.cellIterator(); while(cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch(cell.getCellType()) { case Cell.CELL_TYPE_BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\t\t"); break; case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "\t\t"); break; case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "\t\t"); break; } } System.out.println(""); } file.close(); } catch (Exception e) { } } }
Ça ne t'affiche pas d'erreur parce que ton catch est vide ! Ne jamais faire ça, justement, pour pouvoir les erreurs.
L'erreur vient du fait que HSSFWorkbook c'est pour les xls. Il faut utiliser XSSFWorkbook pour les xlsx. Et pour la manipulation, mieux vaut passer par Workbook, ce qui permet de traiter les deux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Workbook wb = WorkbookFactory.create(new File("C:\\Users\\oumou-raby.dia\\Desktop\\RequeteCoefficientdExploitation.xlsx"));
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Merci, ça marche.
Maintenant je veux créer une classe avec des attributs correspondants aux champs du fichier comme je l'avais précédemment dit; comment vais je associer cette classe au fichier (code que vient d’exécuter)?
Ça va se passer à cet endroit dans ton code :
Au lieu de faire des System.out.print, il faut stocker les propriétés. Il va te falloir un moyen d'associer chaque cellule à chaque propriété.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 switch(cell.getCellType()) { case Cell.CELL_TYPE_BOOLEAN: System.out.print(cell.getBooleanCellValue() + "\t\t"); break; case Cell.CELL_TYPE_NUMERIC: System.out.print(cell.getNumericCellValue() + "\t\t"); break; case Cell.CELL_TYPE_STRING: System.out.print(cell.getStringCellValue() + "\t\t"); break; }
Tu vas avoir donc une classe pour représenter ton objet, par exemple :
Le plus simple serait peut-être qu'au lieu d'itérer sur les cellules, tu y accèdes par row.getCell( numéro ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class MonObject { private String nom; private int code; /**...setters et getters **/ }
Tu te fais des constantes pour identifier tes propriétés
Tu boucles sur un int, que tu utilises pour récupérer la cellule dans la row, puis avec un switch :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 public final static int ID_NOM = 0; public final static int ID_CODE = 1;
Ou tu stockes les valeurs dans des variables, et tu crées ton objet après la boucle sur les cellules, en passant par le constructeur.
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 MonObject object = new MonObject(); for(int columnId=0; columnId<nbColumns; columnId++) { switch( columnId ) { case ID_NOM: { if ( cell.getCellType()==cell.getStringCellValue() object.setNom(cell.getStringCellValue()); } else { // gestion d'erreur } break; case ID_CODE: /*...*/ default: } }
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bonjour,
je voudrai savoir pour la création de la classe si ses attributs doit obligatoirement respecter les mêmes noms des champs continus dans le fichier excel?
Merci
Non, les noms des attributs de la classe sont libres. Bon, en tout logique, comme ils représentent la même information, leurs noms respectifs devraient être plus ou moins les mêmes. Cela peut servir éventuellement à un utilisateur pour s'y retrouver par comparaison. Mais ce n'est pas une contrainte technique, et il n'y a aucune raison technique de respecter scrupuleusement la nomenclature des champs dans Excel.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Ok; mais mon soucis maintenant c'est comment faire pour identifier les propriétés des attributs de la classe que j'ai crée; cette classe a plus de 20 attributs et comment parcourir les colonnes du fichier ; est ce que je dois stocker dans des variables?
- soit un switch avec 20 cas (ça commence à être lourd à maintenir effectivement)
- soit un descripteur, une abstraction avec des spécialisations par type (il n'y a pas beaucoup de types différents), avec de la réflexion (java.lang.invoke.MethodHandle) ou des expressions lambda pour l'affectation de la bonne propriété, et l'id pour récupérer la valeur
- soit une liste de "descripteur", qu'on stream
- ou une map pour mapper champs/id et descripteur, en itérant sur la ligne (row)
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bonjour,
j'arrive toujours pas à assimiler le stockage des données du fichier excel en java.
Dans le message précédent ; vous aviez dit que je dois utiliser map (champs/id) en itérant sur la ligne.
Je ne comprends pas bien; pouvez vous m'en éclaircir svp?
quels attributs va constitué la classe?
Partager