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

Votre email:


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


Articles populaires:

Tags: Catégories: Tags Java:
  1. Décembre 26th, 2008 at 10:05 | # 1

    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?

  2. Décembre 28th, 2008 at 22:36 | # 2

    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.

  3. Janvier 2nd, 2009 à 11:58 | # 3

    Salut,
    J'ai aimé votre tutoriel.
    Manish

  4. Avijit
    Janvier 6th, 2009 à 04:10 | # 4

    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

  5. Janvier 6th, 2009 à 04:44 | # 5

    Salut Avijit,
    Pouvez-vous coller le code source que vous utilisez.

    Hitesh Agarwal

  6. Vivek Mittal
    Janvier 11th, 2009 at 14:08 | # 6

    Salut Hitesh,
    Même de l'homme tutoriel Nice. Keep it up

  7. Abhishek
    Février 18th, 2009 à 07:55 | # 7

    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

  8. seeraz
    Mai 29th, 2009 at 02:41 | # 8

    Great tutorial, thx a lottt ...

  9. Moha
    Juin 2nd, 2009 à 07:38 | # 9

    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.

  10. Rohan
    1 septembre 2009 à 04:40 | # 10

    Xls Très joli à lire le code .. thanx a lot.

  11. barakha
    Septembre 2, 2009 à 01:30 | # 11

    très beau tutoriel Excel fro lecture. Merci

  12. Uma
    Septembre 10th, 2009 at 21:19 | # 12

    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.

  13. qing
    Octobre 13th, 2009 at 18:06 | # 13

    Salut, si le fichier excel ont 18bm, comment lire?

  14. id
    Octobre 15th, 2009 at 13:17 | # 14

    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?

  15. James Zhao
    Octobre 23, 2009 à 14:36 | # 15

    Comment peut-on insérer une nouvelle ligne à la feuille?
    Comment pouvons-nous copier le format de ligne existante à une nouvelle ligne?

  16. Swamy
    28 octobre 2009 à 06h03 | # 16

    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.

  17. Suresh
    Octobre 30th, 2009 à 22:31 | # 17

    Suresh hitesh,

      Nice Exemple.  Tutoriel est très bonne.
     J'ai un problème avec la lecture des données d'Excel Sheet, si les données feuille Excel ne part pas de la première colonne.  si feuille Excel de données n'est pas sous une forme TABLAR
     alors de savoir comment lire les données à partir d'Excel Sheet. 
  18. Suresh
    Octobre 30th, 2009 à 22:47 | # 18

    Salut Hitesh,

      Je Havae un problème avec la lecture
     des données d'Excel Sheet.If la feuille Excel
     Les données ne sont pas sous forme de tableur alors de savoir comment
     lire des données.  Je lance le même exemple, mais il
     s'élève ArrayIndexOutOfBounds Exception.
     Plz Tell La solution à ce problème .....
    
  19. divs
    Novembre 10th, 2009 at 05:31 | # 19

    Salut hitesh,
    Le tutoriel a été d'aider G8

    Merci

  20. Ganesh
    Novembre 10th, 2009 at 23:23 | # 20

    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

  21. Novembre 14, 2009 à 10:04 | # 21

    Salut Ganesh,
    N'ont pas rencontré cette erreur. Devront check this out.

    Merci,
    Hitesh Agarwal

  22. Novembre 30th, 2009 à 23:03 | # 22

    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.

  23. Deepak Sharma
    Décembre 30th, 2009 à 00:16 | # 23

    @ 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?

  24. Swagata
    6 janvier 2010 à 21:56 | # 24

    @ 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!

  25. 7 janvier 2010 à 00:36 | # 25

    merci pour votre tutoriel ^ _ ^

  26. CAG
    22 janvier 2010 à 12:18 | # 26

    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!

  27. Roshan Khandelwal
    31 janvier 2010 à 23:57 | # 27

    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.

  28. Paramjit
    18 février 2010 à 03:26 | # 28

    Été très utile ... great work

  1. Aucun trackback pour le moment.