Bonjour,
J'ai besoin de travailler sur des fichiers Excel en xlsx , j'ai trouvé ce code qui permet de convertir un xlsx en csv.
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
| public static void xlsx(File Fichier_Entree, File Fichier_Sortie) {
/* Pour stocker les données dans le fichier CSV*/
StringBuffer donnee = new StringBuffer();
try {
FileOutputStream fos = new FileOutputStream(Fichier_Sortie);
/* Obtenir l'objet du classeur du fichier XLSX */
System.out.println("Probleme ici");
XSSFWorkbook wBook = new XSSFWorkbook(new FileInputStream(Fichier_Entree));
/* Obtiens la première page du classeur*/
XSSFSheet sheet = wBook.getSheetAt(0);
Row row;
Cell cell;
/* Itérer à travers chaque rangées de la première feuille */
Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
row = rowIterator.next();
/* Pour chaque ligne, itérer sur chaque colonne */
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
cell = cellIterator.next();
switch (cell.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
donnee.append(cell.getBooleanCellValue() + ",");
break;
case Cell.CELL_TYPE_NUMERIC:
donnee.append(cell.getNumericCellValue() + ",");
break;
case Cell.CELL_TYPE_STRING:
donnee.append(cell.getStringCellValue() + ",");
break;
case Cell.CELL_TYPE_BLANK:
donnee.append("" + ",");
break;
default:
donnee.append(cell + ",");
}
/*Retour à la ligne SI BUG AFFICHAGE VOIR OU MIEUX LE PLACER*/
donnee.append("\r\n");
}
}
fos.write(donnee.toString().getBytes());
fos.close();
} catch (Exception ioe) {
ioe.printStackTrace();
}
} |
la partie en grasse est la cause du problème pourtant j'ai bien fait l'import de tous les jars nécessaires
1 2 3 4
| import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
je compile sur windows , j'utilise pas eclipse car j'aurai besoin de travailler sur différents fichier au fur et à mesure du temps et mettre les fichiers en arguments. Tous les jars de poi je les ais pris sur le site officiel avec ce lien là en binaire sans béta en 3.14 https://poi.apache.org/download.html
J'obtiens donc un dossiers principale comme ça en regroupant les jars
J'ai regardé divers stackoverflow , mais j'ai trouvé aucune solution .Au début j'ai juste compilé le poi classique et le poi-ooxml puis j'ai compilé tous les jars avec une grosse commande brut en rajoutant certains jars non présent dans le dossier officiel poi pour voir si c'était dû à certains jar présent dans des anciennes versions :
javac -cp poi-3.14-20160307.jar;poi-ooxml-3.14-20160307.jar;xmlbeans-2.6.0.jar;curvesapi-1.03.jar;poi-ooxml-schemas-3.14-20160307.jar;poi-3.7-jdk1.4-20110508-rc2.jar;poi-scratchpad-3.14-20160307.jar;poi-excelant-3.14-20160307.jar;log4j-1.2.17.jar;junit-4.12.jar;commons-logging-1.2.jar;commons-codec-1.10.jar;dom4j-1.6.1.jar PKI.java
la compilation se passe bien et j'ai toujours l'erreur lors de l'éxécution
Voici le main ou c'est vraiment le début du code donc à pas prendre en compte le reste :
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
| public static void main (String[] args) {
try{
if (args.length > 0){
File F = new File(args[0]);
/*Récupérer le nom du fichier*/
String Nom_Fichier = F.getName();
/*Récupérer l'extension du fichier*/
String Extension_Fichier = Nom_Fichier.substring(Nom_Fichier.lastIndexOf("."));
/*Récupérer le nom du fichier sans extension*/
String NomCourt_Fichier = Nom_Fichier.substring(0,Nom_Fichier.lastIndexOf("."));
System.out.println (Extension_Fichier);
if (Extension_Fichier.equals(".xlsx")){
File Fichier_Sortie = new File(NomCourt_Fichier+".csv");
xlsx(F, Fichier_Sortie);
F = Fichier_Sortie;
System.out.println ("Dans le IF");
System.out.println (F.getName());
}
else{
/*
List<String> res = readFile(f);
for(String element: res){
System.out.println (element);
}*/
System.out.println ("Dans le ELSE");
}
}
else{
System.out.println ("Erreur : Veuillez indiquer au moins plusieurs argument");
System.exit(1);
}
}catch (Exception e) {
System.out.println ("Ce fichier n'existe pas");
}
} |
Quand j'utilise pas la fonction et que je test juste l'import aucun soucis donc je comprends pas pourquoi il trouve pas le XSSWorkbook
Merci de votre attention
Partager