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

Composants Java Discussion :

recuperer des données excel pour les insèrer dans un jTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2017
    Messages : 9
    Par défaut recuperer des données excel pour les insèrer dans un jTable
    Bonjour



    je suis un membre est j'ai un problème

    moi je veux recuperer les valeurs des champs suivant seulement ( id,nom,région) comme faire avec java dans excel si vous pouvais m'aider ensuit les envoyer vers un jTable comment faire

    exemple
    Pièce jointe 238461

    j'ai faire un petit code mais il me semble incorrect
    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
     
    public static Object getCellValue(HSSFSheet s, int rowNumber, int colNumber, Class classeSearch )
    {
     
        Row r=s.getRow(rowNumber);
        Cell c= r.getCell(colNumber);
     
        switch(classeSearch)
        {
     
            case Boolean.class:
                return c.getBooleanCellValue();
     
            case Date.class:
                return c.getDateCellValue();
     
            case Double.class:
                return c.getNumericCellValue();
     
            case String.class:
                return getStringCellValue();
     
     
        }
     
     
        return null;
     
    }
     
    public static void main(String args[]) {
         private Oject c1;
     
     
     
     
           try{
               InputStream i=new FileInputStream("b.xls");
               POIFSFileSystem f=new POIFSFileSystem(i);
               HSSFWorkbook w=new HSSFWorkbook(f);
               HSSFSheet s= w. getSheetAt(0);
     
     
              c1=add(getCellValue(s,1,2,String));
     
               system.out.println("c1"+c1);
     
     
    //       
         }catch(Exception e){ System.out.println("erreur1"+e.getMessage());}
     
     
        }
     
    }

    si une personne peut m'aider a faire un code qui marche merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Déjà, on ne peut pas faire de switch autrement qu'avec des expressions constantes (int, String ou enum), donc tu ne peux pas faire de switch sur des instances de classe. Mais de toute manière ce n'est pas comme ça qu'il faut faire : il faut tester le type de la cellule et en fonction lire la valeur.

    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
     
    public Object getCellValue(Sheet sheet, int rowNum, int colNum) {
     
        Row row = sheet.getRow(rowNum);
        if ( row==null ) {
             return null;
        }
        else {
             Cell cell = row.getCell(colNum);
             if ( cell==null ) {
                return null;
             }
             else {
                 return getCellValue(cell);
             }
        }
     
    }
    public Object getCellValue(Cell cell) {
    switch (cell.getCellTypeEnum()) {
    case CellType.STRING:
        return cell.getRichStringCellValue().getString();
    case CellType.NUMERIC:
        if (DateUtil.isCellDateFormatted(cell)) {
            return cell.getDateCellValue();
        } else {
            return cell.getNumericCellValue();
        }
    case CellType.BOOLEAN:
        return cell.getBooleanCellValue();
    case CellType.FORMULA:
        return evalCell(cell); 
    case CellType.BLANK:
    return null;
    default:
    throw new IllegalStateException("Unknown cell type");
    }
     
    private Object evalCell(Cell cell) {
     
    FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();
     
    CellValue cellValue = evaluator.evaluate(cell);
     
    switch (cellValue.getCellType()) {
        case Cell.CELL_TYPE_BOOLEAN:
            return cellValue.getBooleanValue();
        case Cell.CELL_TYPE_NUMERIC:
            return cellValue.getNumberValue();
        case Cell.CELL_TYPE_STRING:
            return cellValue.getStringValue();
        case Cell.CELL_TYPE_BLANK:
            return null;
        case Cell.CELL_TYPE_ERROR:
            throw new RuntimeException("Excel formula error");
        default:
        throw new IllegalStateException("Unknown cell type");
    }				
     
     
    }
    Ensuite, ne travaille pas avec HSSFWorkbook et consort, travaille avec les Workbook, ce qui te permettra de lire les XLS et XLSX avec le même code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try(InputStream inputStream = Files.newInputStream(Paths.get(filename)){
        Workbook wb = WorkbookFactory.create(inputStream);
        Sheet sheet = wb.getSheetAt(0);
        Object value = getCellvalue(sheet, 2, 3);
    }
    catch(IOException e) {
       e.printStackTrace();
    }
    Ensuite, pour les envoyer dans une JTable, tu peux faire :
    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
     
    public TableModel readExcel(String filename, int sheetNum, boolean headerRow) throws IOException {
    List<List<Object>> data=new ArrayList<>();
    try(InputStream inputStream = Files.newInputStream(Paths.get(filename)){
        Workbook wb = WorkbookFactory.create(inputStream);
        Sheet sheet = wb.getSheetAt(sheetNum);
        for(Row row : sheet) {
             List<Object> line = new ArrayList<>();
             for(Cell cell : row) {
                  try {
                        line.add( getCellValue(cell) );
                  }
                  catch(RuntimeException e) {
                       if ( "Excel formula error".equals(e.getMessage()) {
                           line.add("<ERROR>"); // par exemple
                       }
                       else {
                           throw e;
                       }
                  }
             }
             data.add(line);
        }
     
        if ( data.isEmpty() ) {
              return new DefaultTableModel();
        }
        else if ( headerRow ) {
           Object[][] dataArray = data.stream().skip(1).map(List::toArray).toArray(Object[][]::new);
           String[] colnames = data.get(0).stream().map(String::valueOf).toArray(String[]::new);
           if ( dataArray.length==0 ) {
               return new DefaultTableModel(colnames, 0);
           }
           else {
               return new DefaultTableModel(dataArray, colnames);
           }
        }
        else {
           Object[][] dataArray = data.stream().map(List::toArray).toArray(Object[][]::new);
           String[] colnames = new String[dataArray[0].length];
           for(int i=0; i<colnames.length; i++) {
              colnames[i]="Column "+i;
           }
           return new DefaultTableModel(dataArray, colnames);
        }
        }
    }
    Et pour créer la JTable, tu n'as plus qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new JTable( readExcel(filename, 0, true/* true si la première ligne contient les titres de colonnes, ou false sinon*/) );
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2017
    Messages : 9
    Par défaut
    merci d’avoirs répondu aussi vite a mon message joel
    j'ai essayer le code mais IDE Détecter des erreurs est je ne sait pas pourquoi
    Nom : bb.PNG
Affichages : 1805
Taille : 38,7 Ko

    ensuite le code du jTable je l'ai pas compris
    merci de m'aider pour achever mon code joel

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Il y a effectivement un break de trop dans mon exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    case CellType.FORMULA:
        return evalCell(cell);
    break;
    Il faut le supprimer. J'ai corrigé le code dans mon poste initial, tu as qu'à le reprendre depuis là (surtout que j'ai corrigé 2 autres bugs).

    Pour l'erreur sur CellType, tu as bien importé org.apache.poi.ss.usermodel.CellType ?

    Qu'est-ce que tu ne comprends au sujet de la JTable ? On la créé en lui passant un TableModel en paramètre. On créé ce TableModel comme un DefaultTableModel, qui prend en paramètre un tableau pour les données (à 2 dimensions) et un tableau pour les noms des colonnes (à 1 dimension). On créé le premier tableau à parti d'une liste de listes, parce que c'est plus simple comme ça (il suffit de parcourir par foreach sur lignes et colonnes).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2017
    Messages : 9
    Par défaut
    j'ai essayé se code mais ça na rien donnée

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Rien ? C'est à dire ? Tu peux me montrer ton code ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. [MySQL] récupérer des données formulaires pour les insérer dans une BD
    Par Hamzaviola dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 26/05/2016, 13h06
  2. [XL-2003] Séparer des feuilles excel pour les répartir dans des dossiers
    Par many6976 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 01/07/2013, 10h32
  3. [Toutes versions] Extraire des données word pour les insérer sous excel
    Par progfou dans le forum Word
    Réponses: 23
    Dernier message: 04/05/2009, 14h23
  4. Réponses: 0
    Dernier message: 10/08/2008, 19h05
  5. Réponses: 1
    Dernier message: 31/01/2007, 11h59

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