IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

Spring boot jpa alimenter une table via la lecture d'un fichier


Sujet :

Spring Boot Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut Spring boot jpa alimenter une table via la lecture d'un fichier
    Bonjour ,
    J'ai une appli spring boot jpa où j'aimerai lire un fichier Exemple.xls (fichier excel) qui au niveau de la première feuille excel, lire chaque ligne de cette feuille pour recupérer :

    1- Le contenue (Quantité : exemple ici 250) l'insérer dans la table Exemple généré par mon appli spring boot jpa hibernate au niveau de la colonne quantité
    2- Le contenant exemple (Contenant AB024) pour aller lire la feuille excel ayant le même nom et rentrer toutes les donnes de la colonne A dans la table exemple
    colonne Donnee.

    Et faire pareil pour chaque ligne de la feuille 1.

    Comment m' y prendre avec spring boot jpa hibernate. Sachant que le fichier je le recupère côté front .

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 135
    Points : 391
    Points
    391
    Par défaut
    Déjà, je te conseille de passer par un csv au lieu d'un fichier excel, largement plus simple à traité
    tu peut le lire à partir d'excel et tu peut exporter un excel en csv.

    Ensuite, je dirai qu'il faut s'orienter vers spring batch pour faire cela
    Tu pourra séparer en chunk le traitement, c'est pas mal pour les gros fichier..

    Via un item reader tu va lire ton fichier (FlatFileItemReader est bien pour les csv), et le mettre dans un POJO.
    via un processor au millieu, tu peut faire une transformation ou des calcul (traitement unitaire, 1 par ligne) .
    via le writter a la fin, tu fait ton traitement d'incription en base ( traitement en lot, tu récupère "chunk" élément en entré de ta méthode).

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Salut,

    là j'ai pu lire le fichier avec cet code . Il me faut seulement parser avec le fichier Excel non csv.

    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
     
    package dev.upload;
    import org.apache.poi.EncryptedDocumentException;
    import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
    import org.apache.poi.ss.usermodel.*;
    import java.io.File;
    import java.io.IOException;
    import java.util.Iterator;
    public class ExcelReader {
    	public static final String SAMPLE_XLSX_FILE_PATH = "Exemple.xlsx";
    	public static void main(String[] args) throws EncryptedDocumentException, InvalidFormatException, IOException {
     
    		// Creating a Workbook from an Excel file (.xls or .xlsx)
            Workbook workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH));
     
            // Recupere le nombre de feuilles du fichier excel
            System.out.println("Le fichier excel contient " + workbook.getNumberOfSheets() + " feuilles : ");
     
            /*
               =============================================================
               Iterating over all the sheets in the workbook (Multiple ways)
               =============================================================
            */
     
            // 1. You can obtain a sheetIterator and iterate over it
            /*Iterator<Sheet> sheetIterator = workbook.sheetIterator();
            System.out.println("Retrieving Sheets using Iterator");
            while (sheetIterator.hasNext()) {
                Sheet sheet = sheetIterator.next();
                System.out.println("=> " + sheet.getSheetName());
            }*/
     
            // 2. Or you can use a for-each loop
            /*System.out.println("Retrieving Sheets using for-each loop");
            for(Sheet sheet: workbook) {
                System.out.println("=> " + sheet.getSheetName());
            }*/
     
            // 3. Or you can use a Java 8 forEach with lambda
            /*System.out.println("Retrieving Sheets using Java 8 forEach with lambda");
            workbook.forEach(sheet -> {
                System.out.println("=> " + sheet.getSheetName());
            });*/
     
            /*
               ==================================================================
               Iterating over all the rows and columns in a Sheet (Multiple ways)
               ==================================================================
            */
     
            // Getting the Sheet at index zero
            Sheet sheet = workbook.getSheetAt(2);
     
            // Create a DataFormatter to format and get each cell's value as String
            DataFormatter dataFormatter = new DataFormatter();
     
            // 1. You can obtain a rowIterator and columnIterator and iterate over them
            System.out.println("\n\nIterating over Rows and Columns using Iterator\n");
            Iterator<Row> rowIterator = sheet.rowIterator();
            while (rowIterator.hasNext()) {
                Row row = rowIterator.next();
     
                // Now let's iterate over the columns of the current row
                Iterator<Cell> cellIterator = row.cellIterator();
     
                while (cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();
                    String cellValue = dataFormatter.formatCellValue(cell);
                    System.out.print(cellValue + "\t");
                }
                System.out.println();
            }
     
            // 2. Or you can use a for-each loop to iterate over the rows and columns
            System.out.println("\n\nIterating over Rows and Columns using for-each loop\n");
            for (Row row: sheet) {
                for(Cell cell: row) {
                    String cellValue = dataFormatter.formatCellValue(cell);
                    System.out.print(cellValue + "\t");
                }
                System.out.println();
            }
     
            // 3. Or you can use Java 8 forEach loop with lambda
           /* System.out.println("\n\nIterating over Rows and Columns using Java 8 forEach with lambda\n");
            sheet.forEach(row -> {
                row.forEach(cell -> {
                    String cellValue = dataFormatter.formatCellValue(cell);
                    System.out.print(cellValue + "\t");
                });
                System.out.println();
            });*/
     
            // Closing the workbook
            workbook.close();
     
    	}
     
    }
    Du coup j'essaie de cherche à créer un controleur qui me permet de recupérer le fichier sur n'importe quel emplacement du fichier dans le disque c et le traiter avec la classe Excelreader.

    Je cherche à faire quelque chose du genre dans le contrôleur avec system.getProperty,mais je vais qu'il soit recupérer n'importer quel emplacement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static String filePath = System.getProperty("user.home") + "/mon path";

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2012
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    Du cou, j'ai créé un controleur qui me recupère le fichier et fait mon boulot , super les gars.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. alimenter une table via d'autres
    Par sly60 dans le forum Paradox
    Réponses: 1
    Dernier message: 27/07/2011, 15h24
  2. Alimenter une table sql via une requete ?
    Par lastsql dans le forum Développement
    Réponses: 14
    Dernier message: 09/09/2010, 16h15
  3. Ajouter des CHAMPS dans une table via ASP
    Par hysteresis dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 15h39
  4. Réponses: 3
    Dernier message: 19/09/2005, 13h20
  5. Réponses: 4
    Dernier message: 26/08/2004, 08h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo