Läsa Excel Sheet Dokument i Java
Av någon anledning fann jag Apache POI svår att använda för att läsa Excel-blad, när det gäller namngivning och koden så jag letade efter en annan biblioteket för att läsa Excel-blad i Java och jag stannade på JXL.
Java Excel API nämligen JXL är en Java-baserade API som tillåter oss att läsa / skriva / redigera Excel-ark. Det viktigaste tror jag tyckte om det var dess enkelhet över Apache POI Package. Denna artikel kommer att visa dig hur vi kan läsa Excel-ark med JXL.
Nu här jag kommer att läsa ett Excel-blad med innehållet:
| EmpId | Namn | Utseende |
| 1 | ABC | Software Engineer |
| 2 | DFG | Sr Software Engineer |
| 3 | LOI | Team Leader |
| 4 | LKJ | Projektledare |
| 5 | QWE | Programvara Architech |
Jag har lagt upp samma Excel-blad på servern kan du ladda ner det härifrån: Ladda ner 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 ( ) ; } } } import java.io.File, 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 (ny fil (filePath)), contentReading (FS);) catch (IOException e) (e. printStackTrace ();) catch (Exception e) (e. printStackTrace ();) slutligen (try (fs. stäng ();) catch (IOException e) (e . printStackTrace ();))) / / Returnerar de rubriker som används inne i Excel-blad public void getHeadingFromXlsFile (Tunnplåt) (int AntalKolumner = blad. getColumns (); for (int i = 0; i <AntalKolumner, i + +) (System. ut. println (sheet. getCell (i, 0). getContents ());)) public void contentReading (InputStream fileInputStream) (WorkbookSettings var = null; arbetsbok Arbetsboken = null; Sheet s = null; Cell rowData [] = null; int rowCount = "0"; int AntalKolumner = "0"; DateCell dc = null; int totalSheet = 0; try (var = new WorkbookSettings (); var. setLocale (ny Locale ("sv", "EN" )); arbetsbok = arbetsbok. getWorkbook (fileInputStream var), totalSheet = arbetsbok. getNumberOfSheets (); om (totalSheet> 0) (System. ut. println ("Totalt Sheet Hittade:" + totalSheet) for (int j = 0, j <totalsheet, j + +) (System. ut. println ("Sheet Namn:" + arbetsbok. getSheet (j). getName ());)) / / Hitta Standard Sheet dvs 0 s = arbetsbok. getSheet ( 0), / / Läsa enskild cell getHeadingFromXlsFile (s), / / Totalt Totalt Inga rader i blad, kommer du tillbaka några rader som är upptagna med något datasystem. ut. println ("Totalt antal rader inuti Sheet:" + s . getRows ()); rowCount = s. getRows (); / / Totalt Totalt antal kolumner i Sheet System. ut. println ("Totalt Kolumn inuti Sheet:" + S. getColumns ()); AntalKolumner = s. getColumns ( ), / / avläsa enstaka radinnehåll for (int i = 0; i <rowCount, i + +) (/ / Hämta Individuella Row rowData = s. getRow (i), om (rowData [0]. getContents (). längd ()! = 0) (/ / om den första dagen kolumnen inte får null for (int j = 0, j <AntalKolumner, j + +) (switch (j) (fall 0: systemet. ut. println ("Employee Id: "+ rowData [j]. getContents ()); Fall 1: System. ut. println (" Anställd: "+ rowData [j]. getContents ()); fall 2: System. ut. println (" Employee beskrivning: "+ rowData [j]. getContents ()); default: break;)))) arbetsbok. stäng ();) 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 ();))) |
Totalt Sheet Hittat: 3 --------------------------------------------- - Blad Namn: Blad1 Sheet Namn: Sheet2 Sheet Namn: Sheet3 ------------------------------------- --------- kolumnrubrik: EmpId kolumnrubrik: Namn Kolumn Rubrik: ----------------------------- Utseende ----------------- Totalt antal rader inne Sheet: 6 --------------------------- ------------------- Totalt Kolumn inne Sheet: 3 ------------------------- --------------------- Anställningsnr: EmpId Anställd: Namn Anställd Beteckning: Utseende ----------------- ----------------------------- Anställningsnr: 1 Anställd: ABC Anställd Beteckning: Software Engineer -------- -------------------------------------- Anställningsnr: 2 anställda Namn: DFG anställda Beteckning: Sr Software Engineer ---------------------------------------------- Anställningsnr : 3 Anställd Namn: LOI anställda Utseende: Team Leader --------------------------------------- ------- Anställningsnr: 4 Anställd: LKJ anställda Beteckning: Projektledare ------------------------------ ---------------- Anställningsnr: 5 anställda Namn: QWE Anställd Beteckning: Software Architect När det gäller följande skriftliga kod jag kan utföra följande operation:
- Beräkna totala ingen ark inne i Excel-ark
- Lista alla Sheet Namn som används inuti Excel Sheet
- Läs enskild cell för att ange cellens position - i kod har läst kolumnrubriken dvs 1: a raden
- Läs totalt modifierat rader i Excel Sheet
- Läs totalt modifierat kolumner i Excel-ark
- Läs Enskilda radinnehåll

Anpassad sökning



































Om jag måste skriva denna kod med POI, att utföra de uppgifter som du har gjort, skulle koden ha varit ganska likartade med mycket likartade API-anrop. Jag ser svårigheterna som de mer eller mindre samma jämfört med POI. Min fråga är hur detta skiljer sig från sevärdhet?
Hej Surya,
Skillnad kommer med paketet namnkonventionen används. JXL är enbart används för Excel i Java. Om som i Apache POI finns det olika projekt ut för olika Microsoft Office-filer, t.ex. HWPF, HSSF, HPSF mm Nu som en utvecklare måste du kontrollera vilket en om för Excel Analysera, hämta paketet och sedan genomföra den.
Hej,
Jag gillade din läraren.
Manish
det finns ett problem samtidigt som flera ark i xls-fil. Jag vill accsess flera ark värden på en gång, men den returnerar en ovelap värde av två blad.
men den läraren är för bra.
plz lösa problemet
Hej Avijit,
Kan du klistra in källkoden du använder.
Hitesh Agarwal
Hej Hitesh,
Very nice tutorial man. Keep it up
Hej Hitesh,
Bra jobbat mannen. Jag hade en fråga. Är det möjligt att skriva makron i Excel i Java och utföra dessa makron medan du arbetar med kalkylbladet.
Tack
Abhi
Stor läraren, thx en lottt ...
Hej,
Först och främst, tack för handledningen.
Jag har ett problem. Jag har hämtat api, men jag vet inte var den ska sparas i förmörkelse. Anledningen är att jag putted de uppackade filerna i api i plugin mappen men programmet du gav som exempel fortfarande begär jxl.
Skulle ni kunna hjälpa?
Tack.
Very nice xls läsa koden .. än en lott.
mycket trevlig tutorial fro excel läsa. Tack
hur man läser data från Excel-fil med kolumnnamn.
Säg till exempel,
Ort Land
Chennai Indien
Mumbai Indien
Behovet av att läsa med hjälp av kolumnen ort, land.
Behag hjälpa mig ute.
Hej, Om Excel-filen har 18bm, hur man läser?
hej ..
Jag försöker köra yr program men den håller på att ge mig rätt java version 50,0 bör 49,0.
Dosent JXL arbeta med Java 1,5?
Låt mig veta om det finns anythign im saknas?
Hur kan man infoga en ny rad i plåten?
Hur kan vi kopiera den befintliga raden format till en ny rad?
Hej Hitesh,
Nice bibliotek, fortsätt med det, användbara för människor.
Hur kan vi infoga en ny rad i plåten?
Hur kan vi kopiera den befintliga raden format till en ny rad?
Rgds
Swamy.
Suresh Hitesh,
hej Hitesh,
Hej Hitesh,
Handledningen var av G8 hjälp
Tack
Hej Hitesh,
Jag fick följande undantag när jag försökte köra ReadXLSheet.java.
jxl.read.biff.BiffException: Det går inte att erkänna OLE ström
på jxl.read.biff.CompoundFile. (CompoundFile.java: 116)
på jxl.read.biff.File. (File.java: 127)
på jxl.Workbook.getWorkbook (Workbook.java: 268)
på com.sample.ReadXLSheet.contentReading (ReadXLSheet.java: 65)
på com.sample.ReadXLSheet.init (ReadXLSheet.java: 30)
på com.sample.ReadXLSheet.main (ReadXLSheet.java: 20)
Vad kan vara orsaken till detta.
Inledningsvis fick jag följande undantag när jag försökte köra ReadXLSheet.java.
java.lang.UnsupportedClassVersionError: felaktigt nummer i. klass-fil
Senare i efterkom jexcelapi_2_6_12 källa med min JVM och använt den skapade burken. Nu är jag inte får den här misstag men jag får
jxl.read.biff.BiffException. kanna fullständig behag hjälpa mig att lösa denna fråga.
tack,
Ganesh
Hej Ganesh,
Har inte stött på detta fel. Måste kolla in detta.
Tack,
Hitesh Agarwal
Hej Hitesh,
Thanku för ur kommentarer och handledning.
Jag har ett problem som gäller Excel-blad.
Jag har två Excel-blad, båda är på samma system.
om jag ändrar i ett Excel-blad, då påverkar den andra Excel-arket.
Jag kan pinga andra system och kan skicka meddelandet det andra systemet med hjälp av socket programmering.
men jag har ingen aning om hur man uppdaterar Excel-blad som är på andra system som samma jag gör när excel ark i samma system.
Svara ASAP
Tack på förhand.
@ Ganesh
Kontrollera om ur hjälp. Xlsx istället för. XLS
Jag får detta undantag (går inte att erkänna OLE ström) om jag använder ny xlsx fil.
Så använder jexcelapi_2_6_12 löser xlsx format problem?
@ Ganesh
Kontrollera om filen test.xls är blockerad .. Högerklicka och välj Egenskaper. Om den är blockerad, låsa upp det .. Några säkerhetsfunktion i Windows som blockerar en del nedladdade filer tills du har tagit bort blockeringarna .. Prova om detta hjälper!
tack för din läraren ^ _ ^
tack så mycket, jag arbetade på ett problem där jag behövde stropp xls-fil (400 +) - endast en gång. Du räddade mig dag med denna burk!
Hej alla,
Koden fungerar ganska bra med en förändring.
Efter varje fall uttalande lägga ett "break"
så den reviderade koden är:
switch (j) (
Vid 0:
System.out.println ("Employee Id:" + rowData [j]. GetContents ());
break;
fall 1:
System.out.println ("Employee Namn:" + rowData [j]. GetContents ());
break;
fall 2:
System.out.println ("Employee Beteckning:" + rowData [j]. GetContents ());
break;
standard:
break;
)
Med koden som ges, loopar igenom alla tre skick och ger en felaktig utgång.
Tack för koden.
Varit mycket användbara ... stor verk
@ Ganesh
Jag får samma fel som Ganesh fick. Min fil sparas som. Xls och är igång igen, men ändå få samma BiffException.Please hjälp
Hi tack för koden ... ... ...
Koden fungerade bra när jag kör första gången fick resultatet alltför ....
Men när jag kör samma kod efter tre gånger av exection ... ... dess att filen kunde inte hittas och null punkt undantag ... ... ... .. sökvägen anges är också korrekt .... plzzzz få mig tillbaka med lösning så snart som möjligt ... ... ..
Hej tack för koden ... ... ...
Koden fungerade bra när jag kör första gången fick resultatet alltför ....
Men när jag kör samma kod efter tre gånger av exection ... ... dess att filen kunde inte hittas och null punkt undantag ... ... ... .. plzzzz få mig tillbaka med lösning så snart som möjligt ... ... ..
Tack på förhand ... ... ... ... ... ...
Var skaffar jag jar-filen?
Hej Hitesh,
Gör fullständig har någon aning om att skriva till. Xlsx-filer. Om ja kanna fullständig pls dela några kodexempel.
Tack
Hej Meneka,
Senaste Apache POI stöder xslx fil.
Tack,
Hitesh Agarwal
Jag har laddat ner din kod och tryied att köra det på ubuntu plattform med jdk6
men vid körning dess visat en
Undantag för tråd \ main \ java.lang.NoClassDefFoundError: ReadXLSheet
på java.lang.Class.initializeClass (libgcj.so.10)
Orsakas av: java.lang.ClassNotFoundException: jxl.Cell som inte finns i gnu.gcj.runtime.SystemClassLoader (webbadresser = [file :./], förälder = gnu.gcj.runtime.ExtensionClassLoader (url: er = [], förälder = null ))
på java.net.URLClassLoader.findClass (libgcj.so.10)
på java.lang.ClassLoader.loadClass (libgcj.so.10)
på java.lang.ClassLoader.loadClass (libgcj.so.10)
på java.lang.Class.initializeClass (libgcj.so.10)
i stället för produktion
Kan du säga mig vad är problemet med min kod jag inte kan få och dess urget
sökande mot hjälp ...
Tack på förhand
Hej Gaurav,
Du måste lägga JExcel API i din klass väg medan sammanställningen av java-filen kan du ladda ner JExcelAPI från http://jexcelapi.sourceforge.net/
Tack,
Hitesh Agarwal
Hej,
Jag har skrivit följande funktion:
public void read () kastar IOException (
Arkiv inputWorkbook = new File ("c: / temp / test.xls");
Arbetsbok w;
try (
w = Workbook.getWorkbook (inputWorkbook);
...
) Catch (BiffException e) (
e.printStackTrace ();
)
)
När jag kör denna funktion i en vanlig Java-ansökan tillsammans med JFace allt fungerar bra. Men när jag kör denna funktion inuti en RCP projekt får jag följande felmeddelande:
java.lang.ClassNotFoundException: jxl.read.biff.BiffException
på org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal (BundleLoader.java: 494)
på org.eclipse.osgi.internal.loader.BundleLoader.findClass (BundleLoader.java: 410)
på org.eclipse.osgi.internal.loader.BundleLoader.findClass (BundleLoader.java: 398)
på org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass (DefaultClassLoader.java: 105)
på java.lang.ClassLoader.loadClass (Okänd källa)
på model.CollectionManager.newOilFor (CollectionManager.java: 120)
på model.CollectionManager.loadCollection (CollectionManager.java: 107)
på model.CollectionManager.getCollection (CollectionManager.java: 56)
på hellooil.CollectionViewContentProvider.getElements (CollectionViewContentProvider.java: 39)
...
Är det någon vet vad som är fel?
Jag får detta felmeddelande när jag kör koden postat ovan. Jag dont verkligen förstå problemet. Tack på förhand.
jxl.read.biff.BiffException: Det går inte att erkänna OLE ström
på jxl.read.biff.CompoundFile. (CompoundFile.java: 116)
på jxl.read.biff.File. (File.java: 127)
på jxl.Workbook.getWorkbook (Workbook.java: 268)
på ReadXLSheet.contentReading (ReadXLSheet.java: 55)
på ReadXLSheet.init (ReadXLSheet.java: 20)
på ReadXLSheet.main (ReadXLSheet.java: 109)
Kan någon hjälpa mig skriftligen innehållet i en Excel-fil i en XML-fil i java.
Egentligen im kunna läsa Excel-filen men m försöker att mata in data i XML-filen genom ett föremål för FileWriter men dess inte arbetande ...
du ger mig ett bättre kod.
_________________________________________________
Detta är min kod som m försöker köra:
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util .*;
import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class ReadExcel (
public static void main (String [] args) kastar IOException (
String indatafilen = "c: / data.xls";
Arkiv inputWorkbook = new File (indatafilen);
Arkiv fileout = new File ("C: / data.xml");
FileWriter fw = new FileWriter (fileout);
fw.write ("");
Arbetsbok w;
try (
w = Workbook.getWorkbook (inputWorkbook);
/ / Hämta första bladet
Sheet blad = w.getSheet (0);
/ / Loop under första 10 kolumn och rader
for (int i = 0; i <sheet.getColumns (); i + +) (
for (int j = 0, j <sheet.getRows (); j + +) (
Cell cell = sheet.getCell (j, i);
/ / CellType type = 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 ();
)
)
)
Kan någon hjälpa mig skriftligen innehållet i en Excel-fil i en XML-fil i Java.
Egentligen im kunna läsa Excel-filen men m försöker att mata in data i XML-filen genom ett föremål för FileWriter men dess inte arbetande ...
Lämna mig med lite bättre kod.
_________________________________________________
Detta är min kod som m försöker köra:
** OBS: Jag kunde inte skriva taggar på denna webbplats så jag använde klammerparenteser för taggar i stället för kantiga hängslen
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
importera java.util .*;
import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class ReadExcel (
public static void main (String [] args) kastar IOException (
String indatafilen = "c: / data.xls";
Arkiv inputWorkbook = new File (indatafilen);
Arkiv fileout = new File ("C: / data.xml"),
FileWriter fw = new FileWriter (fileout);
fw.write ("(root)");
Arbetsbok w;
try (
w = Workbook.getWorkbook (inputWorkbook);
/ / Hämta första bladet
Sheet blad = w.getSheet (0);
/ / Loop under första 10 kolumn och rader
for (int i = 0; i <sheet.getColumns (); i + +) (
for (int j = 0, j <sheet.getRows (); j + +) (
Cell cell = sheet.getCell (j, i);
/ / CellType type = 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 ();
)
)
)
Hej kan någon säga mig varifrån ska jag hämta jxl paket och var ska jag placera det att sammanställa min källkod.