begin process at 2012 02 10 19:19:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > IMPORTER FICHIER EXCEL DANS UN JTABLE

IMPORTER FICHIER EXCEL DANS UN JTABLE


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :JTable, Excel, importer Niveau :Débutant Date de création :29/05/2008 Vu / téléchargé :13 799 / 1 510

Auteur : pokitos

Ecrire un message privé
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cette permet à partir d'un fichier excel (sauf version 2007) de créer un JTable qui pourra être insérer dans un JScrollPane ou Imprimer.
Cette classe je l'ai créer car au départ je voulais pouvoir imprimer un fichier excel sans passer par
excel.

Source

  • import java.awt.Font;
  • import java.io.File;
  • import java.io.FileInputStream;
  • import java.io.FileNotFoundException;
  • import java.io.IOException;
  • import java.io.InputStream;
  • import java.util.logging.Level;
  • import java.util.logging.Logger;
  • import javax.swing.JFrame;
  • import javax.swing.JScrollPane;
  • import javax.swing.JTable;
  • import javax.swing.table.DefaultTableModel;
  • import org.apache.poi.hssf.usermodel.HSSFCell;
  • import org.apache.poi.hssf.usermodel.HSSFRow;
  • import org.apache.poi.hssf.usermodel.HSSFSheet;
  • import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  • import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  • /**
  • *
  • * @author Pokitos
  • * Fonctionne avec la library POI. (http://poi.apache.org/hssf/index.html);
  • * Cette classe permet d'importer un fichier excel (sauf de 2007) dans un jtable.
  • */
  • public class UtilitaireXLS {
  • public UtilitaireXLS(){
  • }
  • public static JTable CreerJTableAvecExcel(File file) throws FileNotFoundException, IOException{
  • //Créé nouvelle table
  • JTable table = new JTable();
  • //Lecture du fichier excel
  • InputStream inp = new FileInputStream(file);
  • HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
  • //Recupére page 1 du fichier xls
  • HSSFSheet sheet = wb.getSheetAt(0);
  • //compte nombre de lignes
  • int Nrow = sheet.getLastRowNum();
  • System.out.println("nr "+Nrow);
  • //compte nombre de colonnes
  • int st = NombreMaxColonne(sheet);
  • System.out.println(st);
  • //crée nouveau tableau d'objet
  • Object[][] o = new Object[Nrow][st];
  • //en tête du tableau
  • String[] titre = new String[st];
  • for(int i = 0;i<st;i++){
  • titre[i] = "#"+i;
  • }
  • //parcours la feuille et on recupère les lignes une par une
  • for(int i = 0; i<Nrow;i++){
  • HSSFRow row = sheet.getRow(i);
  • //parcours la ligne pour récupérer les colonnes
  • if(row!=null){
  • for(int j = 0;j<st;j++){
  • //Récupère la cellule puis sa valeur
  • HSSFCell cell = row.getCell((short)j);
  • Object value = ContenuCellule(cell);
  • //System.out.println(value.toString());
  • o[i][j] = value;
  • }
  • }
  • }
  • inp.close();
  • table.setModel(new DefaultTableModel(o, titre));
  • return table;
  • }
  • /**
  • * La cellule peut contenir différent type de valeur qui doivent être récupéré spécifiquement
  • */
  • private static Object ContenuCellule(HSSFCell cell){
  • Object value = null ;
  • if(cell == null){
  • value = "";
  • }
  • else if(cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){
  • value = cell.getBooleanCellValue();
  • }
  • else if(cell.getCellType() == HSSFCell.CELL_TYPE_ERROR){
  • value = cell.getErrorCellValue();
  • }
  • else if(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){
  • value = cell.getCellFormula();
  • }
  • else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
  • value = cell.getNumericCellValue();
  • }
  • else if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){
  • value = cell.getStringCellValue();
  • }
  • return value;
  • }
  • /**
  • * Permet de récupérer le nombre maximun de colonne .
  • * Si une ligne comporte 2 cases vides à la fin , celles ci ne sont pas prises en compte.
  • * Donc pour pouvoir récupérer le nombre de colonne pour initialiser notre tableau on doit parcourir toutes les lignes
  • *
  • */
  • private static int NombreMaxColonne(HSSFSheet sheet){
  • int r = sheet.getLastRowNum();
  • int max = 0;
  • int s = 0;
  • while(s<r){
  • if(sheet.getRow(s) != null){
  • int c = sheet.getRow(s).getLastCellNum();
  • if(c>max){
  • max = c;
  • }
  • }
  • s++;
  • }
  • return max+1;
  • }
  • //exemple
  • public static void main(String args[]) {
  • java.awt.EventQueue.invokeLater(new Runnable() {
  • public void run() {
  • try {
  • //On peut utiliser JFileChooser() aussi.
  • File cible = new File("MonFichierExcel.xls");
  • JTable tableur = UtilitaireXLS.CreerJTableAvecExcel(cible);
  • tableur.setFont(new Font(Font.SERIF,Font.PLAIN,10));
  • JFrame cadre = new JFrame();
  • cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  • cadre.setVisible(true);
  • cadre.setSize(800, 200);
  • JScrollPane panel = new JScrollPane();
  • panel.setViewportView(tableur);
  • cadre.add(panel);
  • //Si vous souhaitez imprimer un jtable utlisez ceci.
  • //MessageFormat header = new MessageFormat("Page {0,number,integer}");
  • //tableur.print(JTable.PrintMode.FIT_WIDTH);
  • }catch (FileNotFoundException ex) {
  • Logger.getLogger(UtilitaireXLS.class.getName()).log(Level.SEVERE, null, ex);
  • } catch (IOException ex) {
  • Logger.getLogger(UtilitaireXLS.class.getName()).log(Level.SEVERE, null, ex);
  • }
  • }
  • });
  • }
  • }
import java.awt.Font;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/**
 *
 * @author Pokitos
 * Fonctionne avec la library POI. (http://poi.apache.org/hssf/index.html);
 * Cette classe permet d'importer un fichier excel (sauf de 2007) dans un jtable.
 */

public class UtilitaireXLS {

        
    
    public UtilitaireXLS(){
        
    }

	
    
	
    public static JTable CreerJTableAvecExcel(File file) throws FileNotFoundException, IOException{
        //Créé nouvelle table
        JTable table = new JTable();
        
        //Lecture du fichier excel
        InputStream inp = new FileInputStream(file);
        HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
        
        //Recupére page 1 du fichier xls
        HSSFSheet sheet = wb.getSheetAt(0);
        
        //compte nombre de lignes
        int Nrow = sheet.getLastRowNum();
        System.out.println("nr "+Nrow);
        
        
        //compte nombre de colonnes
        int st = NombreMaxColonne(sheet);
        System.out.println(st);
		
        //crée nouveau tableau d'objet
        Object[][] o = new Object[Nrow][st];
		
        //en tête du tableau
        String[] titre = new String[st];
        for(int i = 0;i<st;i++){
            titre[i] = "#"+i;
        }
		
        //parcours la feuille et on recupère les lignes une par une
        for(int i = 0; i<Nrow;i++){
            HSSFRow row = sheet.getRow(i);
            
            //parcours la ligne pour récupérer les colonnes
            if(row!=null){
                for(int j = 0;j<st;j++){
					//Récupère la cellule puis sa valeur
                    HSSFCell cell = row.getCell((short)j);
                    Object value = ContenuCellule(cell);
                    //System.out.println(value.toString());
                    o[i][j] = value;
                }
            }
        }
        
        inp.close();
        table.setModel(new DefaultTableModel(o, titre));
        return table;
    }
    
    /**
	* La cellule peut contenir différent type de valeur qui doivent être récupéré spécifiquement
	*/
    private static Object ContenuCellule(HSSFCell cell){
        Object value = null ;
        
        if(cell == null){
            value = "";
        }
        
        else if(cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){
            value = cell.getBooleanCellValue();
        }
        else if(cell.getCellType() == HSSFCell.CELL_TYPE_ERROR){
            value = cell.getErrorCellValue();
        }
        else if(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){
            value = cell.getCellFormula();
        }
        else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
            value = cell.getNumericCellValue();
        }
        else if(cell.getCellType() == HSSFCell.CELL_TYPE_STRING){
            value = cell.getStringCellValue();
        }
        return value;
                
    }
    
	/**
	* Permet de récupérer le nombre maximun de colonne .
	* Si une ligne comporte 2 cases vides à la fin , celles ci ne sont pas prises en compte.
	* Donc pour pouvoir récupérer le nombre de colonne pour initialiser notre tableau on doit parcourir toutes les lignes
	*
	*/
    private static int NombreMaxColonne(HSSFSheet sheet){
        
       int r = sheet.getLastRowNum();
        int max = 0;
        int s = 0;
       while(s<r){
           if(sheet.getRow(s) != null){
               int c = sheet.getRow(s).getLastCellNum();
               if(c>max){
                   max = c;
               }
           }
           s++;
           
       }
        return max+1;
    }
    
    
	//exemple 
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
					//On peut utiliser JFileChooser() aussi.
                    File cible = new File("MonFichierExcel.xls");
                    
                    JTable tableur = UtilitaireXLS.CreerJTableAvecExcel(cible);
                    
                    
                    tableur.setFont(new Font(Font.SERIF,Font.PLAIN,10));
                    
                    JFrame cadre = new JFrame();
                    cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    cadre.setVisible(true);
                    cadre.setSize(800, 200);
                    JScrollPane panel = new JScrollPane();
                    panel.setViewportView(tableur);
                    cadre.add(panel);
                    
					
					//Si vous souhaitez imprimer un jtable utlisez ceci.
                    //MessageFormat header = new MessageFormat("Page {0,number,integer}");
                    //tableur.print(JTable.PrintMode.FIT_WIDTH);               

                    
                    
                }catch (FileNotFoundException ex) {
                    Logger.getLogger(UtilitaireXLS.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IOException ex) {
                    Logger.getLogger(UtilitaireXLS.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }
    
}

 Conclusion

C'est le premier code que je poste , cela fais 2 - 3 mois que je code en java donc je n'ai pas tout acquis. Je suis prêt à entendre toutes critiques.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture [J2ME] MAILXPRESS, UNE PETITE APPLICATION D'ENVOI DE MAIL ÉC... par doderic
Source avec Zip CLIENT ET SERVEUR DE MESSAGERIES par lemout
Source avec Zip Source avec une capture NAVIGATEUR HTTP par lemout
Source avec Zip Source avec une capture PROGRAMME DE PARTAGE DE FICHIER EN RESEAUX par billatosco
Source avec Zip JET SPRING JSF PRIMEFACES par mendjijet

 Sources en rapport avec celle ci

REDIMENSIONNER UNE JTABLE par Julien39
Source avec Zip Source avec une capture JTABLE CUSTOMISÉE par Julien39
Source avec Zip Source avec une capture AFFICHER UN FICHIER CSV DANS UNE JTABLE par Julien39
Source avec une capture JTABLE REDIMENSIONNABLE par Julien39
Source avec Zip CVT_XLS // PERMET DE CONVERTIR UN FICHIER CSV EN FICHIER ... par StevosTeen

Commentaires et avis

Commentaire de simoinfo le 27/07/2008 20:46:11

j'ai un problème lorsque je vx exécuter ton code dans la fonction "ContenuCellule"
dans la ligne suivant : value = cell.getBooleanCellValue();
impossible de convertir le type boolean en Objet
un proposition qui marche :
value = new Boolean(cell.getBooleanCellValue());

Commentaire de pokitos le 27/07/2008 22:32:58

Je prends note,
en fait entre la version 1.06.04 et 1.06.06 de java , il y a eu des modifications, et comme je n'utilise pas de boolean dans mes fichiers excel, je n'ai pas penser à tester.

Je vais modifier et remettre a jour le code.

Commentaire de shaft_amine le 18/10/2008 16:31:55

Salam
J'arrive pas a compiler le code a cause des import par exemple : import org.apache.poi.hssf.usermodel.HSSFCell;
SVP aide ?

Commentaire de yasmina13 le 27/12/2008 23:02:43

lorsque j'ai executé votre programme le JDK m'affiche une erreur pour quoi?

Commentaire de MafiaC le 03/03/2009 10:44:41

Merci

Commentaire de kacenayoub le 26/03/2009 11:41:08 7/10

bjr
est ce qu'il y a pas une methode simple a comprendre pour exporter les donnees d'un jtable vers fichier excel



merci d'avance

Commentaire de nabilokov le 16/05/2009 01:03:26

salut je cherche une methode pour exporter le contenu d'un Jtable en utilisant "Enregistrer " d'un  Jfielchooser 'lire dans le disque dur) pour avoir le contenu du Jtable dans un fichier de format "cvs" pour que je puisse le convertir en excel !!
svp

Commentaire de haj_mah le 30/06/2009 01:36:25

merci,
pour bien exploiter la classe vous pouvez modifie la methode pour return on Object[][] au lieu de JTable;

public static Object[][] creerAvecExcel(File file) throws FileNotFoundException, IOException{
        
        
        //Lecture du fichier excel
        InputStream inp = new FileInputStream(file);
        HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
        
        //Recupére page 1 du fichier xls
        HSSFSheet sheet = wb.getSheetAt(0);
        
        //compte nombre de lignes
        int Nrow = sheet.getLastRowNum();
        System.out.println("nr "+Nrow);
        
        
        //compte nombre de colonnes
        int st = NombreMaxColonne(sheet);
        System.out.println(st);

        //crée nouveau tableau d'objet
        Object[][] o = new Object[Nrow][st];

        //parcours la feuille et on recupère les lignes une par une
        for(int i = 0; i<Nrow;i++){
            HSSFRow row = sheet.getRow(i);
            
            //parcours la ligne pour récupérer les colonnes
            if(row!=null){
                for(int j = 0;j<st;j++){
//Récupère la cellule puis sa valeur
                    HSSFCell cell = row.getCell((short)j);
                    Object value = ContenuCellule(cell);
                    //System.out.println(value.toString());
                    o[i][j] = value;
                }
            }
        }
        
        inp.close();
        
        return o;
    }

Commentaire de morticiancorax le 20/04/2010 04:47:39

je voudrai savoir commment mettre une jtable dans un fishier excel??

Commentaire de elsniper83 le 27/05/2011 22:49:10

juste une question un peu bizarre pour certains mais ou doit etre placé le fichier .xls pour que le programme le détecte et se lance correctement parce que mon compilateur ne le trouve pas...

Merci de vouloir m'aider.

Commentaire de vitros le 11/06/2011 02:00:51

Met le à la racine du repertoire de ton projet

Commentaire de vitros le 11/06/2011 02:02:11

pour etre plus claire, dans le repertoire que scr

Commentaire de vitros le 11/06/2011 02:02:59

Dans le meme repertoire que SCR

Commentaire de pierre3401 le 16/09/2011 10:07:57

Bonjour,
Avec cette méthode, l'importation affiche les formules contenue dans les celluyles, existe-t"il un moyen d'afficher uniquement la valeur de la cellule ?

Commentaire de shaft_amine le 17/09/2011 22:27:04

Bonjour PIERRE3401  
La méthode affiche uniquement les valeurs des cellules

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

transférer le contenu d une jtable en fichier excel [ par acoutarel ] Je voudrais savoir comment transférer le contenu d une jtable en fichier excel puis sans reservir pour pouvoi innitialiser une jtable merciKin'gyo Générer un graphique sous excel [ par adakick ] &nbsp;&nbsp;&nbsp;Bonjour, je voulais savoir comment on pouvais g&#233;n&#233;rer un graphique(histogramme par exemple) a partir d'une JTable.&nbsp;&n importer un classeur Excel en java [ par Talkhor ] Bonjour,J'essaie de me remettre à un projet de logiciel qui serait capable, en java donc, de lire le contenu de cellules d'un fichier excel, mais auss JTable créer un Editor "à la excel" qui s'allonge quand on ajoute une ligne [ par internetowl8000 ] Bonjour, J'ai un JTable avec un renderer à base de JTextPane. J'ai construit un editor à base de JTextPane aussi. Mon problème est que lorsque j'édite Exporter le contenu d'un JTable vers Excel ? [ par amine1234Z ] Salut en afit j'ai pu trouver comment Imprimer le contenu d'u Jtable, mais le probléme c'est au niveau des noms des colones, ils apparait pas bien da exporter un jtable vers un fichier excel [ par khadijaasma ] Bonjour je veux exporter les données d'un jtable vers un fichier excel voici mon code : [code=java] HSSFWorkbook wb = new HSSFWorkbook(); Probleme d'importation jTable vers excel [ par hamzag31 ] Bonjour a tous [^^happy17] je suis debutant en java et je veux exporter mon jtable vers un fichier excel , j'ai jtable de type float . voila ce que j' importer des données d'un document excel vers un autre (java netbeans) [ par fatielmahdi ] Bonjour tout le monde: svp j'ai un probleme dans mon projet [^^sad1], je veux copier juste une colonne de données d'un fichier excel vers un autre mai Désactiver un bouton après selection d'une ligne dans un JTable [ par coolanso ] Bonsoir à tous,après maintes tentatives sanctionnées par des échecs,je viens vendre mon mal espérant trouvé le remède adéquat.voici mon problème,je vo Importer une liste de noms existante dans un fichier binaire dans une JTable [ par samibipbip ] Bonjour Débutant en java, j'ai un exercice à effectuer. Je voudrais importer une liste de noms (+ de 300...) existante dans un fichier binaire. Je vo


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,716 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales