logo

So lesen Sie eine Excel-Datei in Java

In diesem Abschnitt erfahren wir, wie wir Daten aus einer Excel-Datei lesen können.

In Java ist das Lesen einer Excel-Datei aufgrund der Zellen in der Excel-Datei nicht mit dem Lesen einer Word-Datei vergleichbar. JDK bietet keine direkte API zum Lesen oder Schreiben von Microsoft Excel- oder Word-Dokumenten. Wir müssen uns auf die Drittanbieterbibliothek Apache POI verlassen.

Was ist Apache POI?

Apache-POI (Poor Obfuscation Implementation) ist eine Java-API zum Lesen und Schreiben von Microsoft-Dokumenten in beiden Formaten .xls Und .xlsx . Es enthält Klassen und Schnittstellen. Die Apache POI-Bibliothek bietet zwei Implementierungen zum Lesen von Excel-Dateien:

    HSSF-Implementierung (Horrible SpreadSheet Format):Es bezeichnet eine API, die mit Excel 2003 oder früheren Versionen funktioniert.XSSF-Implementierung (XML SpreadSheet Format):Es bezeichnet eine API, die mit Excel 2007 oder späteren Versionen funktioniert.

Schnittstellen und Klassen in Apache POI

Schnittstellen

    Arbeitsmappe:Es stellt eine dar Excel-Arbeitsmappe . Es handelt sich um eine von implementierte Schnittstelle HSSFArbeitsmappe Und XSSFWorkbook .Blatt:Es handelt sich um eine Schnittstelle, die eine darstellt Excel-Arbeitsblatt . Ein Blatt ist eine zentrale Struktur einer Arbeitsmappe, die ein Zellenraster darstellt. Die Sheet-Schnittstelle wird erweitert java.lang.Iterable .Reihe:Es ist auch eine Schnittstelle, die das darstellt Reihe der Tabelle. Die Row-Schnittstelle wird erweitert java.lang.Iterable . Es gibt zwei konkrete Klassen: HSSFRow Und XSSFRow .Zelle:Es ist eine Schnittstelle. Es ist eine hochrangige Darstellung von a Zelle in einer Zeile der Tabelle. HSSFCell Und XSSFCell Implementieren Sie die Cell-Schnittstelle.

Klassen

XLS-Klassen

    HSSF-Arbeitsmappe:Es handelt sich um eine Klasse, die die XLS-Datei darstellt.HSSF-Blatt:Es handelt sich um eine Klasse, die das Blatt in einer XLS-Datei darstellt.HSSFRow:Es handelt sich um eine Klasse, die eine Zeile im Blatt einer XLS-Datei darstellt.HSSFCelle:Es handelt sich um eine Klasse, die eine Zelle in einer Zeile einer XLS-Datei darstellt.

XLSX-Klassen

    XSSFWorkbook:Es handelt sich um eine Klasse, die die XLSX-Datei darstellt.XSSFSheet:Es handelt sich um eine Klasse, die das Blatt in einer XLSX-Datei darstellt.XSSFRow:Es handelt sich um eine Klasse, die eine Zeile im Blatt der XLSX-Datei darstellt.XSSFCell:Es handelt sich um eine Klasse, die eine Zelle in einer Zeile einer XLSX-Datei darstellt.

Schritte zum Lesen von Daten aus einer XLS-Datei

Schritt 1: Erstellen Sie ein einfaches Java-Projekt in Eclipse.

Schritt 2: Erstellen Sie nun einen lib-Ordner im Projekt.

Schritt 3: Laden Sie die folgenden JAR-Dateien herunter und fügen Sie sie im lib-Ordner hinzu:

Schritt 4: Legen Sie den Klassenpfad fest:

Klicken Sie mit der rechten Maustaste auf das Projekt -> Pfad erstellen -> Externe JARs hinzufügen -> wählen Sie alle oben genannten JAR-Dateien aus -> Übernehmen und schließen.

Schritt 5: Erstellen Sie nun eine Klassendatei mit dem Namen ReadExcelFileDemo und schreiben Sie den folgenden Code in die Datei.

Schritt 6: Erstellen Sie eine Excel-Datei mit dem Namen „student.xls“ und schreiben Sie einige Daten hinein.


So lesen Sie eine Excel-Datei in Java

Schritt 7: Speichern Sie das Programm und führen Sie es aus.

Beispiel für das Lesen einer Excel-Datei (.xls).

 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; public class ReadExcelFileDemo { public static void main(String args[]) throws IOException { //obtaining input bytes from a file FileInputStream fis=new FileInputStream(new File('C:\demo\student.xls')); //creating workbook instance that refers to .xls file HSSFWorkbook wb=new HSSFWorkbook(fis); //creating a Sheet object to retrieve the object HSSFSheet sheet=wb.getSheetAt(0); //evaluating cell type FormulaEvaluator formulaEvaluator=wb.getCreationHelper().createFormulaEvaluator(); for(Row row: sheet) //iteration over row using for each loop { for(Cell cell: row) //iteration over cell using for each loop { switch(formulaEvaluator.evaluateInCell(cell).getCellType()) { case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type //getting the value of the cell as a number System.out.print(cell.getNumericCellValue()+ '		'); break; case Cell.CELL_TYPE_STRING: //field that represents string cell type //getting the value of the cell as a string System.out.print(cell.getStringCellValue()+ '		'); break; } } System.out.println(); } } } 

Ausgabe:

 Name Age Height Swarit 23.0 5' Puneet 25.0 6'1' Swastik 22.0 5'5' Tejas 12.0 4'9' 

XLSX-Datei lesen

Bis auf das Dateiformat bleiben alle Schritte gleich.

Tisch: mitarbeiter.xslx


So lesen Sie eine Excel-Datei in Java

Beispiel für eine gelesene Excel-Datei (.xlsx)

In diesem Beispiel verwenden wir die Klasse XSSFWorkbook.

 import java.io.File; import java.io.FileInputStream; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class XLSXReaderExample { public static void main(String[] args) { try { File file = new File('C:\demo\employee.xlsx'); //creating a new file instance FileInputStream fis = new FileInputStream(file); //obtaining bytes from the file //creating Workbook instance that refers to .xlsx file XSSFWorkbook wb = new XSSFWorkbook(fis); XSSFSheet sheet = wb.getSheetAt(0); //creating a Sheet object to retrieve object Iterator itr = sheet.iterator(); //iterating over excel file while (itr.hasNext()) { Row row = itr.next(); Iterator cellIterator = row.cellIterator(); //iterating over each column while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: //field that represents string cell type System.out.print(cell.getStringCellValue() + '			'); break; case Cell.CELL_TYPE_NUMERIC: //field that represents number cell type System.out.print(cell.getNumericCellValue() + '			'); break; default: } } System.out.println(''); } } catch(Exception e) { e.printStackTrace(); } } } 

Ausgabe:

 Employee ID Employee Name Salary Designation Department 1223.0 Harsh 20000.0 Marketing Manager Marketing 3213.0 Vivek 15000.0 Financial Advisor Finance 6542.0 Krishna 21000.0 HR Manager HR 9213.0 Sarika 34000.0 Sales Manager Sales 

Lesen eines bestimmten Zellenwerts aus einer Excel-Datei (.xlsx)

Tisch: EmployeeData.xlsx


So lesen Sie eine Excel-Datei in Java

Beispiel

Im folgenden Beispiel lesen wir den Wert der 2ndReihe und die 2ndSpalte. Die Zeilen- und Spaltenzählung beginnt bei 0. Das Programm gibt also „Software Engineer“ zurück.


So lesen Sie eine Excel-Datei in Java

 //reading value of a particular cell import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadCellExample { public static void main(String[] args) { ReadCellExample rc=new ReadCellExample(); //object of the class //reading the value of 2nd row and 2nd column String vOutput=rc.ReadCellData(2, 2); System.out.println(vOutput); } //method defined for reading a cell public String ReadCellData(int vRow, int vColumn) { String value=null; //variable for storing the cell value Workbook wb=null; //initialize Workbook null try { //reading data from a file in the form of bytes FileInputStream fis=new FileInputStream('C:\demo\EmployeeData.xlsx'); //constructs an XSSFWorkbook object, by buffering the whole stream into the memory wb=new XSSFWorkbook(fis); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e1) { e1.printStackTrace(); } Sheet sheet=wb.getSheetAt(0); //getting the XSSFSheet object at given index Row row=sheet.getRow(vRow); //returns the logical row Cell cell=row.getCell(vColumn); //getting the cell representing the given column value=cell.getStringCellValue(); //getting cell value return value; //returns the cell value } } 

Ausgabe:

 Software Engineer