logo

Hoe een Excel-bestand in Java te lezen

In deze sectie gaan we leren hoe we gegevens uit een Excel-bestand kunnen lezen.

In Java is het lezen van een Excel-bestand niet vergelijkbaar met het lezen van een Word-bestand vanwege de cellen in het Excel-bestand. JDK biedt geen directe API om Microsoft Excel- of Word-documenten te lezen of te schrijven. We moeten vertrouwen op de bibliotheek van derden, Apache POI.

Wat is Apache POI?

Apache POI (Poor Obfuscation Implementation) is een Java API voor het lezen en schrijven van Microsoft-documenten in beide formaten .xls En .xlsx . Het bevat klassen en interfaces. De Apache POI-bibliotheek biedt twee implementaties voor het lezen van Excel-bestanden:

    HSSF-implementatie (Horrible SpreadSheet Format):Het duidt een API aan die werkt met Excel 2003 of eerdere versies.XSSF-implementatie (XML-spreadsheetformaat):Het duidt een API aan die werkt met Excel 2007 of latere versies.

Interfaces en klassen in Apache POI

Interfaces

    Werkboek:Het vertegenwoordigt een Excel-werkmap . Het is een interface die wordt geïmplementeerd door HSSFWerkboek En XSSFWerkboek .Laken:Het is een interface die een Excel-werkblad . Een blad is een centrale structuur van een werkmap, die een raster van cellen vertegenwoordigt. De Sheet-interface wordt uitgebreid java.lang.Itereerbaar .Rij:Het is ook een interface die de rij van het spreadsheet. De Row-interface wordt uitgebreid java.lang.Itereerbaar . Er zijn twee concrete klassen: HSSFRow En XSSFRow .Cel:Het is een interface. Het is een representatie op hoog niveau van a cel in een rij van het spreadsheet. HSSFCel En XSSFcel Implementeer de celinterface.

Klassen

XLS-lessen

    HSSFWerkboek:Het is een klasse die het XLS-bestand vertegenwoordigt.HSSFBlad:Het is een klasse die het blad in een XLS-bestand vertegenwoordigt.HSSFRow:Het is een klasse die een rij in het blad van het XLS-bestand vertegenwoordigt.HSSFCel:Het is een klasse die een cel in een rij XLS-bestanden vertegenwoordigt.

XLSX-klassen

    XSSFWerkboek:Het is een klasse die het XLSX-bestand vertegenwoordigt.XSSFBlad:Het is een klasse die het blad in een XLSX-bestand vertegenwoordigt.XSSFRow:Het is een klasse die een rij in het blad van het XLSX-bestand vertegenwoordigt.XSSFcel:Het is een klasse die een cel in een rij XLSX-bestanden vertegenwoordigt.

Stappen om gegevens uit XLS-bestand te lezen

Stap 1: Maak een eenvoudig Java-project in Eclipse.

Stap 2: Maak nu een lib-map in het project.

Stap 3: Download en voeg de volgende jar-bestanden toe aan de map lib:

Stap 4: Stel het klassenpad in:

Klik met de rechtermuisknop op het project ->Build Path ->Externe JAR's toevoegen -> selecteer alle bovenstaande jar-bestanden -> Toepassen en sluiten.

Stap 5: Maak nu een klassenbestand met de naam LeesExcelBestandDemo en schrijf de volgende code in het bestand.

tekenreeks naar json java

Stap 6: Maak een Excel-bestand met de naam 'student.xls' en schrijf er enkele gegevens in.


Hoe een Excel-bestand in Java te lezen

Stap 7: Bewaar het programma en voer het uit.

Voorbeeld van het lezen van een Excel-bestand (.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(); } } } 

Uitgang:

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

XLSX-bestand lezen

Alle stappen blijven hetzelfde, behalve het bestandsformaat.

Tafel: medewerker.xslx


Hoe een Excel-bestand in Java te lezen

Voorbeeld van een Excel-bestand lezen (.xlsx)

In dit voorbeeld gebruiken we de 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(); } } } 

Uitgang:

Java-escape-tekens
 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 

Een bepaalde celwaarde uit een Excel-bestand (.xlsx) lezen

Tafel: Werknemersgegevens.xlsx


Hoe een Excel-bestand in Java te lezen

Voorbeeld

In het volgende voorbeeld lezen we de waarde van de 2nlrij en de 2nlkolom. Het tellen van de rijen en kolommen begint vanaf 0. Het programma retourneert dus 'Software Engineer'.


Hoe een Excel-bestand in Java te lezen

 //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 } } 

Uitgang:

 Software Engineer