Bonjour,
Quelqu'un saurait-il m'indiquer comment importer toutes les feuilles d'un fichier Excel dans un seul bouton ? Je suis juste parvenu à parcourir une feuille.
Merci d'avance pour votre aide.
Bonjour,
Quelqu'un saurait-il m'indiquer comment importer toutes les feuilles d'un fichier Excel dans un seul bouton ? Je suis juste parvenu à parcourir une feuille.
Merci d'avance pour votre aide.
Importer dans un bouton ???
Les objets workbooks possèdent une méthode qui permet de choisir une Feuille/onglets :
Code : Sélectionner tout - Visualiser dans une fenêtre à part getSheet("nom de la feuille");
(Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Bah un boucle sur tout les feuilles devrait suffire.
Pour savoir le nombre de feuille :
devrait le faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part workbook.getNumberOfSheets()
(Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Boucle for ?
getNumberOfSheets()
getSheetAt(int index)
Ce qui donne :
Tu peux aussi le faire par les noms des feuilles, mais plus chiant. Dans tout les cas, cela montre bien que tu n'es pas aller voir la documentation de base de l'API que tu utilise. Ce qui est dommageable.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for(int index = 0; index< workbook.getNumberOfSheets();index++){ HSSFSheet aSheet = workbook.getSheetAt(index); }
Cordialement,
Patrick Kolodziejczyk.
Si une réponse vous a été utile pensez à
Si vous avez eu la réponse à votre question, marquez votre discussion
Pensez aux FAQs et aux tutoriels et cours.
Merci pour votre aide.
Mais mon problème c'est pas au niveau de nombre de feuille mais plutôt comment parcourir les données de toutes les feuilles pour les insérer dans une base de données, même si je fais une boucle pour chaque feuille mais seulement les données de la première feuille qui s’insèrent dans la base de données.
Espérant que j'ai bien expliqué mon soucis
Montre nous ton code !
Si une réponse vous a été utile pensez à
Si vous avez eu la réponse à votre question, marquez votre discussion
Pensez aux FAQs et aux tutoriels et cours.
(Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
voici le code pour mieux vous expliquer.
voila mon problème c'est que après la première boucle je trouve le sheet1 est vide donc j'arrive pas a insérer les données de sheet1 dans ma BDD.
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 FileInputStream fils = new FileInputStream(file.getPath()); HSSFWorkbook workbook = new HSSFWorkbook(fils); HSSFSheet sheet = workbook.getSheetAt(0); HSSFSheet sheet1 = workbook.getSheetAt(1); HSSFSheet sheet2 = workbook.getSheetAt(2); HSSFSheet sheet3 = workbook.getSheetAt(3); HSSFSheet sheet4 = workbook.getSheetAt(4); Object a = new Object(); Object b = new Object(); Object c = new Object(); Object d = new Object(); Object e = new Object(); Object f = new Object(); Object g = new Object(); for (int j = 16; j < sheet.getLastRowNum(); j++) { HSSFRow row = sheet.getRow(j); if (row.getCell(1).getCellType() == HSSFCell.CELL_TYPE_STRING) { a = row.getCell(1).getStringCellValue(); } if (row.getCell(1).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { a = row.getCell(1).getNumericCellValue(); } if (row.getCell(1) == null || row.getCell(1).getCellType() == HSSFCell.CELL_TYPE_BLANK) { a = ""; } if (row.getCell(2).getCellType() == HSSFCell.CELL_TYPE_STRING) { b = (String) row.getCell(2).getStringCellValue(); } if (row.getCell(2).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { b = row.getCell(2).getNumericCellValue(); } if (row.getCell(2) == null || row.getCell(2).getCellType() == HSSFCell.CELL_TYPE_BLANK) { b = ""; } if (row.getCell(3).getCellType() == HSSFCell.CELL_TYPE_STRING) { c = (String) row.getCell(3).getStringCellValue(); } if (row.getCell(3).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { c = row.getCell(3).getNumericCellValue(); } if (row.getCell(3) == null || row.getCell(3).getCellType() == HSSFCell.CELL_TYPE_BLANK) { c = ""; } if (row.getCell(4).getCellType() == HSSFCell.CELL_TYPE_STRING) { d = (String) row.getCell(4).getStringCellValue(); } if (row.getCell(4).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { d = row.getCell(4).getNumericCellValue(); } if (row.getCell(4) == null || row.getCell(4).getCellType() == HSSFCell.CELL_TYPE_BLANK) { d = ""; } if (row.getCell(5).getCellType() == HSSFCell.CELL_TYPE_STRING) { e = (String) row.getCell(5).getStringCellValue(); } if (row.getCell(5).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { e = row.getCell(5).getNumericCellValue(); } if (row.getCell(5) == null || row.getCell(5).getCellType() == HSSFCell.CELL_TYPE_BLANK) { e = ""; } if (row.getCell(6).getCellType() == HSSFCell.CELL_TYPE_STRING) { f = (String) row.getCell(6).getStringCellValue(); } if (row.getCell(6).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { f = row.getCell(6).getNumericCellValue(); } if (row.getCell(6) == null || row.getCell(6).getCellType() == HSSFCell.CELL_TYPE_BLANK) { f = ""; } if (row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_STRING) { g = (String) row.getCell(7).getStringCellValue(); } if (row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { g = row.getCell(7).getNumericCellValue(); } if (row.getCell(7) == null || row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_BLANK) { g = ""; } String requete = "INSERT INTO soudage VALUES(null,'" + a + "','" + b + "','" + c + "','" + d + "','" + e + "','" + f + "','" + g + "')"; preparedStatement = connexion.prepareStatement(requete); preparedStatement.executeUpdate(); } for (int j = 7; j < sheet1.getLastRowNum(); j++) { HSSFRow row = sheet1.getRow(j); if (row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_STRING) { a = row.getCell(7).getStringCellValue(); } if (row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { a = row.getCell(7).getNumericCellValue(); } if (row.getCell(7) == null || row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_BLANK) { a = ""; } if (row.getCell(9).getCellType() == HSSFCell.CELL_TYPE_STRING) { b = (String) row.getCell(9).getStringCellValue(); } if (row.getCell(9).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { b = row.getCell(9).getNumericCellValue(); } if (row.getCell(9) == null || row.getCell(9).getCellType() == HSSFCell.CELL_TYPE_BLANK) { b = ""; } if (row.getCell(10).getCellType() == HSSFCell.CELL_TYPE_STRING) { c = (String) row.getCell(10).getStringCellValue(); } if (row.getCell(10).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { c = row.getCell(10).getNumericCellValue(); } if (row.getCell(10) == null || row.getCell(10).getCellType() == HSSFCell.CELL_TYPE_BLANK) { c = ""; } String requete = "INSERT INTO soudage1 VALUES(null,'" + a + "','" + b + "','" + c + "')"; preparedStatement = connexion.prepareStatement(requete); preparedStatement.executeUpdate(); }
Je vais directement commenté le code :
Ce qui pour un programmeur qui se respecte un minimum :
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 FileInputStream fils = new FileInputStream(file.getPath()); HSSFWorkbook workbook = new HSSFWorkbook(fils); // On a dit une boucle for pas une déclaration statique aussi mal venu ! HSSFSheet sheet = workbook.getSheetAt(0); HSSFSheet sheet1 = workbook.getSheetAt(1); HSSFSheet sheet2 = workbook.getSheetAt(2); HSSFSheet sheet3 = workbook.getSheetAt(3); HSSFSheet sheet4 = workbook.getSheetAt(4); // Déclaration d'objet sans nom ou type pour savoir ce qu'ils présentent. // Ne devrait jamais avoir lieu ! Object a = new Object(); Object b = new Object(); Object c = new Object(); Object d = new Object(); Object e = new Object(); Object f = new Object(); Object g = new Object(); // Pourquoi on commence à 16 ? for (int j = 16; j < sheet.getLastRowNum(); j++) { HSSFRow row = sheet.getRow(j); // Si tu compte réalise le même code 7 fois de suite autant faire une fonction ! // On ne parlera pas du fait de ça pique les yeux. if (row.getCell(1).getCellType() == HSSFCell.CELL_TYPE_STRING) { a = row.getCell(1).getStringCellValue(); } if (row.getCell(1).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { a = row.getCell(1).getNumericCellValue(); } if (row.getCell(1) == null || row.getCell(1).getCellType() == HSSFCell.CELL_TYPE_BLANK) { a = ""; } if (row.getCell(2).getCellType() == HSSFCell.CELL_TYPE_STRING) { b = (String) row.getCell(2).getStringCellValue(); } if (row.getCell(2).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { b = row.getCell(2).getNumericCellValue(); } if (row.getCell(2) == null || row.getCell(2).getCellType() == HSSFCell.CELL_TYPE_BLANK) { b = ""; } if (row.getCell(3).getCellType() == HSSFCell.CELL_TYPE_STRING) { c = (String) row.getCell(3).getStringCellValue(); } if (row.getCell(3).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { c = row.getCell(3).getNumericCellValue(); } if (row.getCell(3) == null || row.getCell(3).getCellType() == HSSFCell.CELL_TYPE_BLANK) { c = ""; } if (row.getCell(4).getCellType() == HSSFCell.CELL_TYPE_STRING) { d = (String) row.getCell(4).getStringCellValue(); } if (row.getCell(4).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { d = row.getCell(4).getNumericCellValue(); } if (row.getCell(4) == null || row.getCell(4).getCellType() == HSSFCell.CELL_TYPE_BLANK) { d = ""; } if (row.getCell(5).getCellType() == HSSFCell.CELL_TYPE_STRING) { e = (String) row.getCell(5).getStringCellValue(); } if (row.getCell(5).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { e = row.getCell(5).getNumericCellValue(); } if (row.getCell(5) == null || row.getCell(5).getCellType() == HSSFCell.CELL_TYPE_BLANK) { e = ""; } if (row.getCell(6).getCellType() == HSSFCell.CELL_TYPE_STRING) { f = (String) row.getCell(6).getStringCellValue(); } if (row.getCell(6).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { f = row.getCell(6).getNumericCellValue(); } if (row.getCell(6) == null || row.getCell(6).getCellType() == HSSFCell.CELL_TYPE_BLANK) { f = ""; } if (row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_STRING) { g = (String) row.getCell(7).getStringCellValue(); } if (row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { g = row.getCell(7).getNumericCellValue(); } if (row.getCell(7) == null || row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_BLANK) { g = ""; } // Requête en dur sans protection par rapport au variable que tu lis. Si tu as un ' dans ton fichier ton script plante. String requete = "INSERT INTO soudage VALUES(null,'" + a + "','" + b + "','" + c + "','" + d + "','" + e + "','" + f + "','" + g + "')"; preparedStatement = connexion.prepareStatement(requete); preparedStatement.executeUpdate(); } // Déclaration de fonction ? // Pourquoi 7 cette fois ci ? for (int j = 7; j < sheet1.getLastRowNum(); j++) { HSSFRow row = sheet1.getRow(j); if (row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_STRING) { a = row.getCell(7).getStringCellValue(); } if (row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { a = row.getCell(7).getNumericCellValue(); } if (row.getCell(7) == null || row.getCell(7).getCellType() == HSSFCell.CELL_TYPE_BLANK) { a = ""; } if (row.getCell(9).getCellType() == HSSFCell.CELL_TYPE_STRING) { b = (String) row.getCell(9).getStringCellValue(); } if (row.getCell(9).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { b = row.getCell(9).getNumericCellValue(); } if (row.getCell(9) == null || row.getCell(9).getCellType() == HSSFCell.CELL_TYPE_BLANK) { b = ""; } if (row.getCell(10).getCellType() == HSSFCell.CELL_TYPE_STRING) { c = (String) row.getCell(10).getStringCellValue(); } if (row.getCell(10).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { c = row.getCell(10).getNumericCellValue(); } if (row.getCell(10) == null || row.getCell(10).getCellType() == HSSFCell.CELL_TYPE_BLANK) { c = ""; } String requete = "INSERT INTO soudage1 VALUES(null,'" + a + "','" + b + "','" + c + "')"; preparedStatement = connexion.prepareStatement(requete); preparedStatement.executeUpdate(); }
Après, il faut bien comprendre que le code donnée n'est qu'une présentation simpliste de ce que tu devrais avoir. Pas du code blindé, ni même compilable tel que (Ou sinon c'est par chance.)
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 FileInputStream fils = new FileInputStream(file.getPath()); HSSFWorkbook workbook = new HSSFWorkbook(fils); for (int i = 0; i < workbook .getNumberOfSheets(); i++) { HSSFSheet sheet = workbook.getSheetAt(i); for (int j = 7; j < sheet1.getLastRowNum(); j++) { HSSFRow row = sheet1.getRow(j); String requete = "INSERT INTO soudage1 VALUES(null,'" + getValueFromRowAtCell(row, 7) + "','" + getValueFromRowAtCell(row, 9) + "','" + getValueFromRowAtCell(row, 10) + "')"; preparedStatement = connexion.prepareStatement(requete); preparedStatement.executeUpdate(); } } public static Object getValueFromRowAtCell(Row row, int cellIndex){ if (row.getCell(cellIndex).getCellType() == HSSFCell.CELL_TYPE_STRING) { // TODO ajouter une protection ici pour les ' return row.getCell(cellIndex).getStringCellValue(); } if (row.getCell(cellIndex).getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { return row.getCell(cellIndex).getNumericCellValue(); } // Ce test ne sert à rien, car sinon on ne retourne rien. //if (row.getCell(cellIndex) == null || row.getCell(cellIndex).getCellType() == HSSFCell.CELL_TYPE_BLANK) { // return ""; //} return ""; }
Cordialement,
Patrick Kolodziejczyk.
Si une réponse vous a été utile pensez à
Si vous avez eu la réponse à votre question, marquez votre discussion
Pensez aux FAQs et aux tutoriels et cours.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager