Partage
  • Partager sur Facebook
  • Partager sur Twitter

lecture d'un fichier excel avec java

    6 juin 2024 à 20:57:07

    Bonjour

    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.

    • Partager sur Facebook
    • Partager sur Twitter
      8 juin 2024 à 12:16:47

      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.

      • Partager sur Facebook
      • Partager sur Twitter
        9 juin 2024 à 16:03:01

        Bonjour

        Bon je suis passé a Maven.

        Voici le code pour lire un fichier excel :

        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();
            } 
        }

        mAintenant voici le fichier pom :

        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>
            <groupId>com.mycompany</groupId>
            <artifactId>LectureEcritureExcel</artifactId>
            <version>1.0-SNAPSHOT</version>
            <packaging>jar</packaging>
            <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <exec.mainClass>com.mycompany.lectureecritureexcel.LectureEcritureExcel</exec.mainClass>
                <maven.compiler.release>22</maven.compiler.release>
            </properties>
            <dependencies>
                <!-- Dépendances pour Apache POI --> 
                <dependency> 
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi-ooxml</artifactId> 
                    <version>5.2.5</version> 
                </dependency> 
                <dependency>
                    <groupId>org.apache.poi</groupId> 
                    <artifactId>poi-ooxml-schemas</artifactId> 
                    <version>4.1.2</version>
                </dependency> 
                <dependency> 
                    <groupId>org.apache.xmlbeans</groupId> 
                    <artifactId>xmlbeans</artifactId>
                    <version>5.2.0</version> 
                </dependency> 
                <dependency> 
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi</artifactId> 
                    <version>5.2.5</version> 
                </dependency> 
                <dependency> 
                    <groupId>commons-codec</groupId> 
                    <artifactId>commons-codec</artifactId> 
                    <version>1.17.0</version> 
                </dependency> 
            </dependencies>
        </project>

        Maintenant lors du Clean & Build voici l'erreur :

        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 ?



        • Partager sur Facebook
        • Partager sur Twitter
          9 juin 2024 à 18:00:41

          C'est une bonne initiative, desormais une nouvelle erreur vient de la classe ExcelReader qui ne compile pas:

          A vue de nez j'ai l'impression qu'il manque un } a la fin pour fermer la classe.

          Ton IDE ne rale pas?

          • Partager sur Facebook
          • Partager sur Twitter
            12 juin 2024 à 7:37:56

            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

            • Partager sur Facebook
            • Partager sur Twitter

            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é.
            • Editeur
            • Markdown