Lecture de documents Excel Sheet en Java
Pour une raison que je trouve Apache POI difficile à utiliser pour la lecture de feuille Excel, en termes de conventions de nommage et le code de sorte que je cherchais une autre bibliothèque pour la lecture Excel Sheet en Java et je me suis arrêté à JXL.
Java API Excel nommément JXL est une API basée sur Java qui permet de lire / écrire / modifier la feuille Excel. Les principaux pense que j'ai aimé c'est sa simplicité sur le paquet Apache POI. Cet article va vous montrer comment nous pouvons lire à l'aide Excel Sheet JXL.
Maintenant, ici, je vais vous lire une feuille Excel dont le contenu est:
| EmpID | Nom | Désignation |
| 1 | ABC | Ingénieur logiciel |
| 2 | DFG | Sr Software Engineer |
| 3 | LI | Chef d'équipe |
| 4 | LKJ | Chef de projet |
| 5 | QWE | Logiciel Architech |
J'ai téléchargé la même feuille Excel sur le serveur, vous pouvez le télécharger ici: Télécharger Excel Sheet
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 ( ) ; } } } java.io.File importation; java.io.FileInputStream importation; java.io.IOException importation; java.io.InputStream importation; java.util.Locale importation; jxl.Cell importation; jxl.Sheet importation; jxl.Workbook d'importation; jxl.WorkbookSettings importation; jxl.read.biff.BiffException importation; jxl.DateCell importation; public class ReadXLSheet (public void init (filePath String) (FileInputStream fs = null; try (fs = FileInputStream nouvelles (new File (FilePath)); contentReading (fs);) catch (IOException e) (e. printStackTrace ();) catch (Exception e) (e. printStackTrace ();) finally (try (fs. close ();) catch (IOException e) (e . printStackTrace ();))) / / Retourne les rubriques utilisées à l'intérieur de la feuille Excel getHeadingFromXlsFile public void (fiche fiche) (int = columnCount fiche. getColumns (); for (int i = 0; i <columnCount; i + +) (System. OUT. println (sheet. getCell (i, 0). getContents ());)) public void contentReading (fileInputStream InputStream) (WorkbookSettings a = null; classeur classeur = null; s Feuille = null; Cell rowData [] = null; rowCount int = '0 '; columnCount int = '0'; DC DateCell = null; totalSheet int = 0; try (a = WorkbookSettings new (); a été. setlocale (nouvelle Locale ("fr", "FR" )); classeur = classeur. getWorkbook (fileInputStream, a); totalSheet = classeur. getNumberOfSheets (); if (totalSheet> 0) (System. OUT. out.println ("total du bilan trouvé:" totalSheet +), car (int j = 0; j totalsheet <; j + +) (System. OUT. out.println ("Nom de la feuille:" classeur +. getSheet (j). getName ());)) / / Mise en défaut Feuille soit 0 s = classeur. getSheet ( 0); / / lecture individuelle Cell getHeadingFromXlsFile (s) / / Total Pas de lignes dans la feuille, vous revenez pas de lignes qui sont occupés avec des données du système. OUT. println ("nombre total de lignes à l'intérieur de la feuille:" + s . GetRows ()); rowCount = s. GetRows (); / / Total Nombre de colonnes en tôle système. OUT. out.println ("total de la colonne à l'intérieur de la feuille:" + art getColumns ()); columnCount = getColumns art ( ); / / lecture individuelle Row Content for (int i = 0; i <rowCount; i + +) (/ / Get rowData ligne individuelle = getRow l'art (i); if ([rowData 0]. getContents (). longueur ()! = 0) (/ / la date de la première colonne ne doit pas nulle pour (int j = 0; j <columnCount; j + +) (switch (j) (case 0: System. OUT. out.println ("Employee Id: "+ rowData [j]. getContents ()); le cas 1: Système. OUT. out.println (" Nom de l'employé: "+ rowData [j]. getContents ()); case 2: Système. OUT. out.println (" employés Libellé: "+ 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 ();))) |
Fiche Total trouvé: 3 ---------------------------------------------- Nom de la feuille: Feuil1 Nom de la feuille: Feuil2 Nom de la feuille: Sheet3 ---------------------------------------------- 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 de la colonne à l'intérieur de feuilles: 3 ---------------------------------------------- Employee ID: EmpID Nom de l'employé: Nom Désignation des employés: Désignation ---------------------------------------------- Employee ID: 1 Nom de l'employé: ABC Désignation des employés: Ingénieur logiciel ---------------------------------------------- Employee ID: 2 Nom de l'employé: DFG Désignation des employés: Sr Software Engineer ---------------------------------------------- Employee ID: 3 Nom de l'employé: lettre d'intention Désignation des employés: Chef d'équipe ---------------------------------------------- Employee ID: 4 Nom de l'employé: LKJ Désignation des employés: Chef de projet ---------------------------------------------- Employee ID: 5 Nom de l'employé: QWE Désignation des employés: Architecte logiciel
En ce qui concerne le code suivant écrit, je suis en mesure d'effectuer les opérations suivantes:
- Total Calculer pas des feuilles à l'intérieur de la feuille Excel
- Listez tous le nom de feuille Excel Sheet utilisés à l'intérieur
- Lire individuelle des cellules pour préciser la position de la cellule - dans le code lu le titre de la colonne soit au 1er rang
- Lire Total lignes modifiées dans la feuille Excel
- Lire Total colonnes modifiées dans la feuille Excel
- Lire le contenu ligne individuelle

Recherche personnalisée


































Si je dois écrire ce code à l'aide de POI, pour accomplir les tâches que vous avez effectué, le code aurait été assez similaire avec les appels API très similaires. Je vois le niveau de difficulté plus ou moins le même par rapport aux POI. Ma question est de savoir comment est-ce différent de POI?
Surya Salut,
Différence vient avec le paquet convention de nommage utilisé. JXL est purement utilisé pour Excel en Java. Lorsque, dans Apache POI il ya différents projets réalisés pour les différents fichiers de Microsoft Office, Eg HWPF, HSSF, HPSF etc Maintenant, en tant que développeur, vous devez vérifier que l'on si pour Excel Analyse, télécharger le paquet, puis mettre en œuvre.
Salut,
J'ai bien aimé votre tutoriel.
Manish
il ya un problème tout en ayant plusieurs feuilles dans fichier xls. Je veux accsess valeurs fiche multiples à la fois, mais elle retourne une valeur ovelap de deux feuilles.
mais le didacticiel est trop bonne.
plz résoudre le problème
Avijit Salut,
Pouvez-vous coller le code source que vous utilisez.
Hitesh Agarwal
Hitesh Salut,
Très gentil tutorial. Keep it up
Hitesh Salut,
travail, l'homme de Nice. J'avais une question. Est-il possible d'écrire des macros Excel en Java et d'exécuter les macros lorsque vous travaillez sur la feuille de calcul.
Merci
Abhi
Grande tutoriel, 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ù l'enregistrer dans Eclipse. La raison est que j'ai mis les fichiers décompressés de l'API dans le dossier plugin, mais le programme que vous a donné comme exemple prie encore pour jxl.
Pourriez-vous s'il vous plaît aider?
Merci.
xls Très joli à lire le code .. merci beaucoup.
très belle BOF tutoriel Excel lecture. Merci
comment lire les données à partir d'Excel en utilisant le fichier nom de la colonne.
Dites par exemple,
Lieu Pays
Chennai en Inde
Mumbai en Inde
Besoin d'aide pour lire la colonne de la Place, pays.
S'il vous plaît aidez-moi.
Salut, si le fichier Excel ont 18bm, comment lire?
hey ..
J'essaie de courir an programme, mais il continue à me donner tort version Java devrait être 50,0 49,0.
Dosent JXL travailler avec Java 1.5?
Permettez-moi de savoir s'il ya anythign im manque?
Comment pouvons-nous insérer une nouvelle ligne de la feuille?
Comment pouvons-nous copier le format de ligne existante à une nouvelle ligne?
Hitesh Salut,
bibliothèque de Nice, keep it up, utile pour les personnes.
Comment pouvons-nous insérer une nouvelle ligne de la feuille?
Comment pouvons-nous copier le format de ligne existante à une nouvelle ligne?
Rgds
Swamy.
hitesh Suresh,
Hitesh Salut,
hitesh Salut,
Le tutoriel a été d'aider G8
Merci
Hitesh Salut,
J'ai 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.
Au départ, j'ai obtenu l'exception suivante quand j'ai essayé de lancer le ReadXLSheet.java.
java.lang.UnsupportedClassVersionError: numéro de version dans 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
Ganesh Salut,
N'ont pas rencontré cette erreur. Devra vérifier cela.
Merci,
Hitesh Agarwal
Hitesh Salut,
Thanku des commentaires ur et le didacticiel.
J'ai un problème sur excel.
J'ai deux feuille Excel, les deux sont au même système.
si je ne change dans une feuille Excel, il influer sur la feuille Excel d'autres.
Je suis en mesure de faire un ping d'autres systèmes 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 est sur l'autre système que l'im même de faire quand la feuille Excel au même système.
S'il vous plaît réponse ASAP
Merci d'avance.
@ Ganesh
Vérifiez si ur l'aide. Xlsx au lieu de. Xls
Je me procurer cette exception (Impossible de reconnaître le flux OLE) si j'utilise le fichier xlsx nouvelle.
Donc, en utilisant jexcelapi_2_6_12 va résoudre le problème de format xlsx?
@ Ganesh
Vérifiez si le fichier est bloqué test.xls .. Cliquez à droite et allez à 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 d'un fichier XLS estrope (400 +) - une seule fois. Vous m'a sauvé la journée avec ce pot!
Salut tout le monde,
Le code fonctionne très bien avec un seul changement.
Après chaque déclaration de cas ajouter un "break"
de sorte que le code révisé serait:
switch (j) (
case 0:
System.out.println ("Employee Id:" + rowData [j]. GetContents ());
break;
Cas 1:
System.out.println ("Nom de l'employé:" + rowData [j]. GetContents ());
break;
Cas 2:
System.out.println ("employés Libellé:" + rowData [j]. GetContents ());
break;
par défaut:
break;
)
Avec le code tel qu'il figure, il parcourt tous état de trois et donne une sortie erronée.
Merci pour le code.
Été un travail très utile ... grande
@ Ganesh
Je reçois la même erreur que j'ai Ganesh. Mon fichier est enregistré sous. Xls et est débloqué, mais encore obtenir le même BiffException.Please aider
Salut Merci pour le code ... ... ...
Code a bien fonctionné quand je lance la première fois obtenu des résultats aussi ....
Mais quand je lance le même code, après trois périodes de sa exection ... ... donnant fichier non trouvé et l'exception point zéro ... ... ... .. nom de chemin d'accès spécifiés est aussi correct .... plzzzz-moi de revenir avec une solution dès que possible ... ... ..
Salut Merci pour le code ... ... ...
Code a bien fonctionné quand je lance la première fois obtenu des résultats aussi ....
Mais quand je lance le même code, après trois périodes de sa exection ... ... donnant fichier non trouvé et l'exception point zéro ... ... ... .. plzzzz-moi de revenir avec une solution dès que possible ... ... ..
Merci d'avance ... ... ... ... ... ...
Où puis-je obtenir le fichier jar?
Hitesh Salut,
Ne u avoir une idée sur l'écriture de fichiers. Xlsx. Si oui peut pls u partager quelques exemples de code.
Merci
Meneka Salut,
Dernières Apache POI soutient fichier xslx.
Merci,
Hitesh Agarwal
J'ai téléchargé votre code et tryied pour le faire fonctionner sur la plateforme Ubuntu avec jdk6
mais au moment de l'exécution de son a montré que ce
Exception dans \ thread principal java.lang.NoClassDefFoundError \: ReadXLSheet
à java.lang.Class.initializeClass (libgcj.so.10)
Causée par: java.lang.ClassNotFoundException: jxl.Cell ne trouve pas dans gnu.gcj.runtime.SystemClassLoader (urls = [fichier parent :./], = (urls gnu.gcj.runtime.ExtensionClassLoader = [], parent = null ))
à java.net.URLClassLoader.findClass (libgcj.so.10)
à java.lang.ClassLoader.loadClass (libgcj.so.10)
à java.lang.ClassLoader.loadClass (libgcj.so.10)
à java.lang.Class.initializeClass (libgcj.so.10)
au lieu de la production
CAN-vous s'il vous plaît dites-moi Quel est le problème avec mon code, je ne suis pas en mesure d'obtenir et de ses urget
cherche à aider ...
Merci d'avance
Gaurav Salut,
Vous devrez ajouter JExcel API dans votre chemin de classe lors de la compilation le fichier java, vous pouvez télécharger le JExcelAPI de http://jexcelapi.sourceforge.net/
Merci,
Hitesh Agarwal
Salut,
J'ai écrit la fonction suivante:
public void read () throws IOException (
inputWorkbook File = new File ("c: / temp / test.xls");
w classeur;
try (
w = Workbook.getWorkbook (inputWorkbook);
...
) Catch (BiffException e) (
e.printStackTrace ();
)
)
Quand je lance cette fonction au sein d'une application Java normal avec tout ce JFace fonctionne très bien. Mais quand je lance cette fonction à l'intérieur d'un projet RCP-je obtenir l'erreur suivante:
java.lang.ClassNotFoundException: jxl.read.biff.BiffException
à org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal (BundleLoader.java: 494)
à org.eclipse.osgi.internal.loader.BundleLoader.findClass (BundleLoader.java: 410)
à org.eclipse.osgi.internal.loader.BundleLoader.findClass (BundleLoader.java: 398)
à org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass (DefaultClassLoader.java: 105)
à java.lang.ClassLoader.loadClass (Source inconnue)
à model.CollectionManager.newOilFor (CollectionManager.java: 120)
à model.CollectionManager.loadCollection (CollectionManager.java: 107)
à model.CollectionManager.getCollection (CollectionManager.java: 56)
à hellooil.CollectionViewContentProvider.getElements (CollectionViewContentProvider.java: 39)
...
Est-ce que quelqu'un sait ce qui pourrait mal tourner?
Je reçois cette erreur quand je lance le code affiché ci-dessus. Je n'ai pas vraiment comprendre le problème. Merci d'avance.
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)
à ReadXLSheet.contentReading (ReadXLSheet.java: 55)
à ReadXLSheet.init (ReadXLSheet.java: 20)
à ReadXLSheet.main (ReadXLSheet.java: 109)
Aide quelqu'un peut me par écrit le contenu d'un fichier Excel dans un fichier XML en Java.
En fait im capable de lire le fichier Excel, mais j'essaye de transmettre les données dans le fichier xml à travers un objet de FileWriter, mais sa ne fonctionne pas ...
S'il vous plaît me donner quelques un meilleur code.
_________________________________________________
Ceci est mon code qui m essayer d'exécuter:
java.io.BufferedWriter d'importation;
java.io.File d'importation;
java.io.FileWriter d'importation;
java.io.IOException d'importation;
import java.util .*;
jxl.Cell d'importation;
jxl.CellType d'importation;
jxl.Sheet d'importation;
jxl.Workbook d'importation;
jxl.read.biff.BiffException d'importation;
public class (ReadExcel
public static void main (String [] args) throws IOException (
InputFile String = "c: / DATA.XLS";
inputWorkbook fichier = new File (InputFile);
fileout File = new File ("C: / data.xml");
fw = new FileWriter FileWriter (fileout);
fw.write ("");
w classeur;
try (
w = Workbook.getWorkbook (inputWorkbook);
/ / Obtention de la première feuille
Fiche fiche = w.getSheet (0);
/ / Boucle sur les 10 premières colonnes et lignes
for (int i = 0; sheet.getColumns <i (); i + +) (
for (int j = 0; j <sheet.getRows (); j + +) (
À cellules = sheet.getCell (j, i);
/ / Type = CellType cell.getType ();
if (cell.getType () == CellType.LABEL) (
fw.write ("" + cell.getContents ()+"");
)
if (cell.getType () == CellType.NUMBER) (
fw.write ("" + cell.getContents ()+"");
)
)
)
fw.write ("");
) Catch (BiffException e) (
e.printStackTrace ();
)
)
)
aider tout le monde peut-il m'aider à écrire le contenu d'un fichier Excel dans un fichier XML en Java.
En fait im capable de lire le fichier Excel, mais j'essaye de transmettre les données dans le fichier xml à travers un objet de FileWriter, mais sa ne fonctionne pas ...
S'il vous plaît me donner quelques un meilleur code.
_________________________________________________
Ceci est mon code qui m essayer d'exécuter:
** REMARQUE: je n'étais pas capable d'écrire les balises sur ce site alors j'ai utilisé des accolades pour les étiquettes au lieu d'accolades angulaire
java.io.BufferedWriter d'importation;
java.io.File d'importation;
java.io.FileWriter d'importation;
java.io.IOException d'importation;
import java.util .*;
jxl.Cell d'importation;
jxl.CellType d'importation;
jxl.Sheet d'importation;
jxl.Workbook d'importation;
jxl.read.biff.BiffException d'importation;
public class (ReadExcel
public static void main (String [] args) throws IOException (
InputFile String = "c: / DATA.XLS";
inputWorkbook fichier = new File (InputFile);
fileout File = new File ("C: / data.xml");
fw = new FileWriter FileWriter (fileout);
fw.write ("() root");
w classeur;
try (
w = Workbook.getWorkbook (inputWorkbook);
/ / Obtention de la première feuille
Fiche fiche = w.getSheet (0);
/ / Boucle sur les 10 premières colonnes et lignes
for (int i = 0; sheet.getColumns <i (); i + +) (
for (int j = 0; j <sheet.getRows (); j + +) (
À cellules = sheet.getCell (j, i);
/ / Type = CellType cell.getType ();
if (cell.getType () == CellType.LABEL) (
fw.write ("(tag)" cell.getContents + ()+"{/ tag) ");
)
if (cell.getType () == CellType.NUMBER) (
fw.write ("(tag)" cell.getContents + ()+"{/ tag) ");
)
)
)
fw.write ("(/ root)");
) Catch (BiffException e) (
e.printStackTrace ();
)
)
)
Hey quelqu'un peut-il me dire où dois-je télécharger paquet jxl et où dois-je placer la compiler mon code source.