J'ai un petit code qui me permet de lire un fichier excel :
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.ss.usermodel.*;
public class Main {
public static void main(String[] args) {
try {
String chemin = "C:/Users/User/Desktop/Expire Excel/Répa.xlsx";
// Spécifiez le chemin du fichier Excel à ouvrir
FileInputStream file = new FileInputStream(new File(chemin));
// Créez un classeur Excel à partir du fichier
Workbook workbook = WorkbookFactory.create(file);
// Accédez à la première feuille du classeur
Sheet sheet = workbook.getSheetAt(0);
// Parcourez toutes les lignes et colonnes de la feuille
for (Row row : sheet) {
for (Cell cell : row) {
// Récupérez la valeur de chaque cellule et faites quelque chose avec
System.out.print(cell.toString() + "\t");
}
System.out.println();
}
// Fermez le fichier
file.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
le Clean & Build = RAS ok
Mais lorsque je lance le Run cela me met une erreur :
run:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/output/UnsynchronizedByteArrayOutputStream
at org.apache.poi.poifs.filesystem.FileMagic.valueOf(FileMagic.java:209)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:222)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:185)
at Main.main(Main.java:20)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 4 more
C:\Users\User\AppData\Local\NetBeans\Cache\21\executor-snippets\run.xml:111: The following error occurred while executing this line:
C:\Users\User\AppData\Local\NetBeans\Cache\21\executor-snippets\run.xml:68: Java returned: 1
BUILD FAILED (total time: 0 seconds)
j'utilise NetBeans et je suis débutant en Java. Je découvre petit a petit.
Probalement manque-t-il une dependance transitive (dependence d'une dependance), ou un conflit avec une autre version.
Tu devras trouver quelle est la librarie qui offre la classe citee et l'ajouter.
Si tu compte t'investir dans java, a terme il vaut mieux compter sur un systeme de gestion de dependances comme maven, ca ajoute de la complexite au debut mais une fois qu'on a le pli ca simplifie fortement la vie.
package com.mycompany.lectureecritureexcel;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelReader { public static void main(String[] args) {
String excelFilePath = "C:/Users/User/Desktop/Expire Excel/Répa.xlsx";
try (FileInputStream fis = new FileInputStream(excelFilePath);
Workbook workbook = new XSSFWorkbook(fis)) {
// Accéder à la première feuille
Sheet sheet =workbook.getSheetAt(0);
// Parcourir les lignes et les cellules
for (Row row : sheet) {
for (Cell cell : row) {
// Lire la valeur de la cellule en fonction du type
switch (cell.getCellType()) {
case STRING -> System.out.print(cell.getStringCellValue() + "\t");
case NUMERIC -> System.out.print(cell.getNumericCellValue() + "\t");
case BOOLEAN -> System.out.print(cell.getBooleanCellValue() + "\t");
default -> System.out.print(" - ");
}
}
System.out.println();
}
}
catch (IOException e) {
e.printStackTrace();
}
}
cd C:\Users\User\Documents\NetBeansProjects\LectureEcritureExcel; "JAVA_HOME=C:\\Program Files\\Java\\jdk-22" cmd /c "\"C:\\Program Files\\NetBeans-22\\netbeans\\java\\maven\\bin\\mvn.cmd\" \"-Dmaven.ext.class.path=C:\\Program Files\\NetBeans-22\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar\" --no-transfer-progress clean install"
Scanning for projects...
-----------------< com.mycompany:LectureEcritureExcel >-----------------
Building LectureEcritureExcel 1.0-SNAPSHOT
from pom.xml
--------------------------------[ jar ]---------------------------------
--- clean:3.2.0:clean (default-clean) @ LectureEcritureExcel ---
Deleting C:\Users\User\Documents\NetBeansProjects\LectureEcritureExcel\target
--- resources:3.3.1:resources (default-resources) @ LectureEcritureExcel ---
skip non existing resourceDirectory C:\Users\User\Documents\NetBeansProjects\LectureEcritureExcel\src\main\resources
--- compiler:3.11.0:compile (default-compile) @ LectureEcritureExcel ---
Changes detected - recompiling the module! :source
Compiling 2 source files with javac [debug release 22] to target\classes
-------------------------------------------------------------
COMPILATION ERROR :
-------------------------------------------------------------
com/mycompany/lectureecritureexcel/ExcelReader.java:[34,2] reached end of file while parsing
1 error
-------------------------------------------------------------
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 1.098 s
Finished at: 2024-06-09T16:01:55+02:00
------------------------------------------------------------------------
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile (default-compile) on project LectureEcritureExcel: Compilation failure
com/mycompany/lectureecritureexcel/ExcelReader.java:[34,2] reached end of file while parsing
-> [Help 1]
To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.
For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
je m'en sort pas.. J'ai meme desinstaller/réinstaller mon JDK sans succès ?
Il faut profiter des trucs modernes : faire reformater le code par l'ide.
EDIT: Alt-Maj-F sous Netbeans IDE 20 / linux. (*)
Normalement il fera passer la déclaration de main sur une autre ligne que celle de la classe (ligne 8). Et on verra de suite qu'il manque une accolade en bas. Capture ci dessous : on voit que la dernière accolade - pour laquelle il y a un message en rouge - est sur le second trait d'alignement, au lieu du premier.
Un truc moins moderne : lire les messages d'erreur, et essayer de les comprendre. En général ça marche mieux que de désinstaller/réinstaller.
(*) raccourci à connaître absolument par coeur. Conseil : pour le connaître, ne pas faire d'effort pour l'apprendre, juste 1) décider que le code doit être reformaté systématiquement dès qu'on y touche 2) coller un postit sur le côté de l'écran, comme ça pas besoin de chercher 3) le regarder quand on ne sait plus. En 2 jours c'est un réflexe acquis.
- Edité par michelbillaud 12 juin 2024 à 12:33:11
lecture d'un fichier excel avec java
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl
PXL Le retro gaming facile Thread sur le forum: https://openclassrooms.com/forum/sujet/retro-pxl