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.
Version imprimable
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:getSheet("nom de la feuille");
Bah un boucle sur tout les feuilles devrait suffire.
Pour savoir le nombre de feuille :
devrait le faire.Code:workbook.getNumberOfSheets()
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:
1
2
3 for(int index = 0; index< workbook.getNumberOfSheets();index++){ HSSFSheet aSheet = workbook.getSheetAt(index); }
Cordialement,
Patrick Kolodziejczyk.
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 !
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:
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:
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:
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.