Excel Java - Lecture Feuille Excel en Java
Pour certaines raisons, je trouve Apache POI difficile à utiliser pour la lecture feuille Excel, en termes de conventions de dénomination et le code de sorte que je cherchais une autre bibliothèque pour la lecture feuille Excel en Java, et je me suis arrêté à JXL.
Java Excel API savoir JXL est une API basée sur Java qui permet de lire / écrire / modifier la feuille Excel. Les principaux think i aimé c'était sa simplicité sur le paquet Apache POI. Cet article va vous montrer comment nous pouvons lire la feuille Excel avec JXL.
Or, ici je vais vous lire une feuille Excel ayant contenu:
| EmpID | Nom | Désignation |
| 1 | ABC | Software Engineer |
| 2 | DFG | Sr Software Engineer |
| 3 | LOI | Chef d'équipe |
| 4 | LKJ | Project Manager |
| 5 | QWE | Logiciels Architech |
J'ai téléchargé la même feuille Excel sur le serveur vous pouvez le télécharger ici: Télécharger Formulaire Excel
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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | ; import java.io.FileInputStream ; import java.io.IOException ; import java.io.InputStream ; import java.util.Locale ; import jxl.Cell ; import jxl.Sheet ; import jxl.Workbook ; import jxl.WorkbookSettings ; import jxl.read.biff.BiffException ; import jxl.DateCell ; public class ReadXLSheet { public void init ( String filePath ) { FileInputStream fs = null ; try { fs = new FileInputStream ( new File ( filePath ) ) ; contentReading ( fs ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } catch ( Exception e ) { e. printStackTrace ( ) ; } finally { try { fs. close ( ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } } } //Returns the Headings used inside the excel sheet public void getHeadingFromXlsFile ( Sheet sheet ) { int columnCount = sheet. getColumns ( ) ; for ( int i = 0 ; i < columnCount ; i ++ ) { System . out . println ( sheet. getCell ( i, 0 ) . getContents ( ) ) ; } } public void contentReading ( InputStream fileInputStream ) { WorkbookSettings ws = null ; Workbook workbook = null ; Sheet s = null ; Cell rowData [ ] = null ; int rowCount = '0' ; int columnCount = '0' ; DateCell dc = null ; int totalSheet = 0 ; try { ws = new WorkbookSettings ( ) ; ws. setLocale ( new Locale ( "en" , "EN" ) ) ; workbook = Workbook. getWorkbook ( fileInputStream, ws ) ; totalSheet = workbook. getNumberOfSheets ( ) ; if ( totalSheet > 0 ) { System . out . println ( "Total Sheet Found:" + totalSheet ) ; for ( int j = 0 ; j < totalsheet ; j ++ ) { System . out . println ( "Sheet Name:" + workbook. getSheet ( j ) . getName ( ) ) ; } } //Getting Default Sheet ie 0 s = workbook. getSheet ( 0 ) ; //Reading Individual Cell getHeadingFromXlsFile ( s ) ; //Total Total No Of Rows in Sheet, will return you no of rows that are occupied with some data System . out . println ( "Total Rows inside Sheet:" + s. getRows ( ) ) ; rowCount = s. getRows ( ) ; //Total Total No Of Columns in Sheet System . out . println ( "Total Column inside Sheet:" + s. getColumns ( ) ) ; columnCount = s. getColumns ( ) ; //Reading Individual Row Content for ( int i = 0 ; i < rowCount ; i ++ ) { //Get Individual Row rowData = s. getRow ( i ) ; if ( rowData [ 0 ] . getContents ( ) . length ( ) != 0 ) { // the first date column must not null for ( int j = 0 ; j < columnCount ; j ++ ) { switch ( j ) { case 0 : System . out . println ( "Employee Id:" + rowData [ j ] . getContents ( ) ) ; case 1 : System . out . println ( "Employee Name:" + rowData [ j ] . getContents ( ) ) ; case 2 : System . out . println ( "Employee Designation:" + rowData [ j ] . getContents ( ) ) ; default : break ; } } } } workbook. close ( ) ; } catch ( IOException e ) { e. printStackTrace ( ) ; } catch ( BiffException e ) { e. printStackTrace ( ) ; } } public static void main ( String [ ] args ) { try { ReadXLSheet xlReader = new ReadXLSheet ( ) ; xlReader. init ( "/home/hitesh/Desktop/test.xls" ) ; } catch ( Exception e ) { e. printStackTrace ( ) ; } } } import java.io.File; java.io.FileInputStream importation; java.io.IOException importation; java.io.InputStream importation; java.util.Locale importation; jxl.Cell importation; jxl.Sheet importation; jxl.Workbook importation; jxl.WorkbookSettings importation; jxl.read.biff.BiffException importation; jxl.DateCell importation; public class ReadXLSheet (public void init (String filePath) (FileInputStream fs = null; try (fs = new FileInputStream (new File (filePath)); contentReading (fs);) catch (IOException e) (e. printStackTrace ();) catch (Exception e) (e. printStackTrace ();) finally (try (fs. close ();) catch (IOException e) ( . printStackTrace ();))) / / Retourne les rubriques utilisées dans la feuille Excel getHeadingFromXlsFile public void (fiche de renseignements) (int = columnCount feuille. getColumns (); for (int i = 0; i <columnCount; i + +) (System.. out.println (sheet. getCell (i, 0). getContents ());)) public void contentReading (FileInputStream InputStream) (WorkbookSettings ws = null; Cahier classeur = null; feuille S = null; rowData Cell [] = null; rowCount int = '0 '; columnCount int = '0'; DateCell dc = null; totalSheet int = 0; try (a = WorkbookSettings new (); était. setLocale (new Locale ( "fr", "EN" )); classeur = classeur. getWorkbook (FileInputStream, a été); totalSheet = classeur. getNumberOfSheets (); if (totalSheet> 0) (System.. out.println ( "total du bilan Trouvé:" + totalSheet) for (int j = 0; j <totalsheet; j + +) (System.. out.println ( "Nom de la feuille:" + classeur. getSheet (j). getName ());)) / / Mise en défaut Sheet soit 0 s = classeur. getSheet ( 0); / / lecture individuelle getHeadingFromXlsFile cellule (s) / / Total Total n ° de lignes de feuille, vous permettra de revenir aucune de lignes qui sont occupés par quelques données System.. out.println ( "nombre total de lignes dans la feuille:" + s . GetRows ()); = GetRows rowCount art (); / / Total Nombre total de colonnes dans la feuille System.. out.println ( "Total en colonnes dans la feuille:" + a. getColumns ()); = columnCount art getColumns ( ) / / lecture individuelle Row Content for (int i = 0; i <rowCount; i + +) (/ / Get rowData ligne individuelle = s. getRow (i); if (rowData [0]. getContents (). longueur ()! = 0) (/ / la date de la première colonne ne doit pas null for (int j = 0; j <columnCount; j + +) (switch (j) (case 0: System.. out.println ( "Employee Id: "+ rowData [j]. getContents ()); case 1: System.. out.println (" Nom de l'employé: "+ rowData [j]. getContents ()); case 2: System.. out.println (" Employee Désignation: "+ rowData [j]. getContents ());: default break;)))) classeur. close ();) catch (IOException e) (e. printStackTrace ();) catch (BiffException e) (e. printStackTrace ( );)) public static void main (String [] args) (try (xlReader ReadXLSheet = new ReadXLSheet (); xlReader. init ( "/ home / hitesh / Desktop / Test.xls");) catch (Exception e) ( e. printStackTrace ();))) |
Total du bilan Found: 3 ---------------------------------------------- Nom de la feuille: Feuil1 Nom de la feuille: Feuil2 Nom de la feuille: Feuil3 ---------------------------------------------- Tête de colonne: EmpID Tête de colonne: Nom Tête de colonne: Désignation ---------------------------------------------- Nombre total de lignes à l'intérieur Fiche: 6 ---------------------------------------------- Total colonne à l'intérieur Sheet: 3 ---------------------------------------------- Employee Id: EmpID Nom de l'employé: Nom Employé Désignation: Désignation ---------------------------------------------- Employee Id: 1 Nom de l'employé: ABC Désignation des employés: Software Engineer ---------------------------------------------- Employee Id: 2 Nom de l'employé: DFG Désignation des employés: Sr Software Engineer ---------------------------------------------- Employee Id: 3 Nom de l'employé: LOI Employé de désignation: Chef d'équipe ---------------------------------------------- Employee Id: 4 Nom de l'employé: LKJ Employé Désignation: Project Manager ---------------------------------------------- Employee Id: 5 Nom de l'employé: QWE Désignation des employés: Software Architect
En ce qui concerne le code suivant écrit, je suis en mesure d'effectuer l'opération suivante:
- Calculer le total des feuilles à l'intérieur pas de la feuille Excel
- Liste tous le nom de feuille Excel utilisés à l'intérieur Sheet
- Lire individuelle des cellules pour préciser la position de la cellule - dans le code avoir lu le titre de colonne 1ère ligne dire
- Lire totale mise à jour lignes de la feuille Excel
- Lire totale mise à jour des colonnes dans la feuille Excel
- Lire Individuel Row Contenu

Custom Search
















Si je dois écrire ce code à l'aide de POI, pour accomplir les tâches que vous avez effectué, le code aurait été assez similaires avec des appels très similaire API. Je vois le niveau de difficulté plus ou moins le même par rapport aux POI. Ma question est comment est-ce différent de POI?
Salut Surya,
Différence vient avec le paquet convention de nommage utilisé. JXL est purement utilisée pour Excel en Java. Lorsque, dans Apache POI il existe différents projets réalisés pour différents fichiers Microsoft Office, Eg HWPF, HSSF, HPSF etc Maintenant en tant que développeur, vous devez vérifier que l'on si pour Excel Parsing, télécharger le package, puis mettre en œuvre.
Salut,
J'ai aimé votre tutoriel.
Manish
il ya un problème tout en ayant plusieurs feuilles dans xls. Je tiens à accsess valeurs de plusieurs feuilles à la fois, mais elle retourne une valeur ovelap de deux feuilles.
mais le didacticiel est trop bon.
plz résoudre le problème
Salut Avijit,
Pouvez-vous coller le code source que vous utilisez.
Hitesh Agarwal
Salut Hitesh,
Même de l'homme tutoriel Nice. Keep it up
Salut Hitesh,
Travail de l'homme de Nice. J'avais une question. Est-il possible d'écrire les macros d'Excel en Java et exécuter les macros lorsque vous travaillez sur la feuille de calcul.
Merci
Abhi
Great tutorial, thx a lottt ...
Salut,
Tout d'abord, merci pour le tutoriel.
J'ai un problème. J'ai téléchargé l'API, mais je ne sais pas où le mettre dans Eclipse. La raison est que je les maîtres dans la décompression des fichiers de l'API dans le dossier plugin mais le programme vous a donné comme exemple prie toujours pour jxl.
Pourriez-vous s'il vous plaît d'aide?
Merci.
Xls Très joli à lire le code .. thanx a lot.
très beau tutoriel Excel fro lecture. Merci
Comment faire pour lire les données du fichier Excel en utilisant le nom de colonne.
Disons, par exemple,
Lieu Pays
Chennai Inde
Mumbai Inde
Besoin de lire l'aide de la Place de colonne, pays.
S'il vous plaît m'aider.
Salut, si le fichier excel ont 18bm, comment lire?
hey ..
Je suis en train d'exécuter le programme an mais il ne cesse de me donner tort 50,0 version Java devrait être 49,0.
Dosent travail JXL avec Java 1.5?
Permettez-moi de savoir s'il ya im anythign manque?
Comment peut-on insérer une nouvelle ligne à la feuille?
Comment pouvons-nous copier le format de ligne existante à une nouvelle ligne?
Salut Hitesh,
Bibliothèque de Nice, keep it up, utile pour les gens.
Comment peut-on insérer une nouvelle ligne à la feuille?
Comment pouvons-nous copier le format de ligne existante à une nouvelle ligne?
Rgds
Swamy.
Suresh hitesh,
Salut Hitesh,
Salut hitesh,
Le tutoriel a été d'aider G8
Merci
Salut Hitesh,
J'ai eu l'exception suivante quand j'ai essayé de lancer le ReadXLSheet.java.
jxl.read.biff.BiffException: Impossible de reconnaître le flux OLE
à jxl.read.biff.CompoundFile. (CompoundFile.java: 116)
à jxl.read.biff.File. (File.java: 127)
à jxl.Workbook.getWorkbook (Workbook.java: 268)
à com.sample.ReadXLSheet.contentReading (ReadXLSheet.java: 65)
à com.sample.ReadXLSheet.init (ReadXLSheet.java: 30)
à com.sample.ReadXLSheet.main (ReadXLSheet.java: 20)
Quelle pourrait être la raison à cela.
Au départ, j'ai eu l'exception suivante quand j'ai essayé de lancer le ReadXLSheet.java.
java.lang.UnsupportedClassVersionError: numéro de version Bad. fichier de classe
Plus tard, j'ai respecté la source jexcelapi_2_6_12 avec mon JVM et utilisé le pot généré. Maintenant, je ne reçois pas cette erreur, mais je veux en venir
jxl.read.biff.BiffException. Can U s'il vous plaît m'aider à résoudre ce problème.
merci,
ganesh
Salut Ganesh,
N'ont pas rencontré cette erreur. Devront check this out.
Merci,
Hitesh Agarwal
Salut Hitesh,
Thanku pour les commentaires ur et le didacticiel.
J'ai un problème concernant la feuille Excel.
J'ai deux feuille Excel, les deux sont au même système.
si je ne change dans une feuille Excel, il affecte l'autre feuille Excel.
Je suis en mesure de faire un ping autre système et peut envoyer le message de l'autre système en utilisant la programmation socket.
mais je n'ai aucune idée de comment mettre à jour la feuille Excel qui se trouve sur l'autre système que le GI fait quand même la feuille Excel sur le même système.
S'il vous plaît reply ASAP
Merci à l'avance.
@ Ganesh
Vérifiez si ur utilisez. Xlsx au lieu de. Xls
Je me procurer cette exception (Impossible de reconnaître le flux OLE) si j'utilise le fichier xlsx nouvelles.
Donc, en utilisant jexcelapi_2_6_12 allons résoudre le problème format xlsx?
@ Ganesh
Vérifiez si le fichier est bloqué test.xls .. Faites un clic droit et aller aux propriétés. Si elle est bloquée, le débloquer .. Certains fonctionnalité de sécurité dans Windows qui bloque certains fichiers téléchargés, jusqu'à ce que vous les débloquer .. Essayez si cela aide!
merci pour votre tutoriel ^ _ ^
merci beaucoup, je travaillais sur un problème où j'avais besoin de fichier xls Strop (400 +) - une seule fois. Vous avez sauvé la journée avec moi ce bocal!
Salut tout le monde,
Le code fonctionne très bien avec un seul changement.
Après chaque déclaration de cas ajouter un "break"
afin que le code révisé serait:
switch (j) (
case 0:
System.out.println ( "Employee Id:" + rowData [j]. GetContents ());
break;
case 1:
System.out.println ( "Nom de l'employé:" + rowData [j]. GetContents ());
break;
case 2:
System.out.println ( "Employee Désignation:" + rowData [j]. GetContents ());
break;
par défaut:
break;
)
Avec le code tel qu'il figure, il parcourt tous état de trois et donne un résultat erroné.
Merci pour le code.
Été très utile ... great work