logo

Hur man läser Excel-fil i Java

I det här avsnittet ska vi lära oss hur vi kan läsa data från en excel-fil.

I Java liknar läsning av excel-fil inte att läsa word-fil på grund av celler i excel-fil. JDK tillhandahåller inte direkt API för att läsa eller skriva Microsoft Excel- eller Word-dokument. Vi måste lita på tredjepartsbiblioteket som är Apache POI.

Vad är Apache POI?

Apache POI (Poor Obfuscation Implementation) är ett Java API för att läsa och skriva Microsoft-dokument i båda formaten .xls och .xlsx . Den innehåller klasser och gränssnitt. Apache POI-biblioteket tillhandahåller två implementeringar för att läsa Excel-filer:

turbo c++ ladda ner
    Implementering av HSSF (Horrible SpreadSheet Format):Det betecknar ett API som fungerar med Excel 2003 eller tidigare versioner.Implementering av XSSF (XML SpreadSheet Format):Det betecknar ett API som fungerar med Excel 2007 eller senare versioner.

Gränssnitt och klasser i Apache POI

Gränssnitt

    Arbetsbok:Den representerar en Excel arbetsbok . Det är ett gränssnitt implementera av HSSF Arbetsbok och XSSF-arbetsbok .Ark:Det är ett gränssnitt som representerar en Excel arbetsblad . Ett ark är en central struktur i en arbetsbok, som representerar ett rutnät av celler. Sheet-gränssnittet utökas java.lang.Iterable .Rad:Det är också ett gränssnitt som representerar rad av kalkylarket. Row-gränssnittet utökas java.lang.Iterable . Det finns två konkreta klasser: HSSFRow och XSSFRow .Cell:Det är ett gränssnitt. Det är en representation på hög nivå av en cell i en rad i kalkylarket. HSSFCell och XSSFCell implementera cellgränssnitt.

Klasser

XLS-klasser

    HSSF Arbetsbok:Det är en klass som representerar XLS-filen.HSSFSblad:Det är en klass som representerar arket i en XLS-fil.HSSFRow:Det är en klass som representerar en rad i arket med XLS-fil.HSSFCell:Det är en klass som representerar en cell i en rad av XLS-fil.

XLSX-klasser

    XSSF Workbook:Det är en klass som representerar XLSX-filen.XSSFSblad:Det är en klass som representerar arket i en XLSX-fil.XSSFRow:Det är en klass som representerar en rad i arket med XLSX-fil.XSSFCell:Det är en klass som representerar en cell i en rad av XLSX-fil.

Steg för att läsa data från XLS-fil

Steg 1: Skapa ett enkelt Java-projekt i Eclipse.

Steg 2: Skapa nu en lib-mapp i projektet.

Steg 3: Ladda ner och lägg till följande jar-filer i lib-mappen:

Steg 4: Ställ in klassvägen:

Högerklicka på projektet ->Bygg sökväg ->Lägg till externa JARs -> välj alla ovanstående jar-filer -> Använd och stäng.

Steg 5: Skapa nu en klassfil med namnet LäsExcelFileDemo och skriv följande kod i filen.

Steg 6: Skapa en excel-fil med namnet 'student.xls' och skriv in lite data i den.


Hur man läser Excel-fil i Java

Steg 7: Spara och kör programmet.

Exempel på att läsa excel-fil (.xls)-fil

 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(); } } } 

Produktion:

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

Läser XLSX-fil

Alla steg kommer att förbli desamma utom filformat.

c++ par

Tabell: anställd.xslx


Hur man läser Excel-fil i Java

Exempel på läs excel-fil (.xlsx)

I det här exemplet använder vi klassen 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(); } } } 

Produktion:

 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 

Läsa ett visst cellvärde från en excel-fil (.xlsx)

Tabell: EmployeeData.xlsx


Hur man läser Excel-fil i Java

Exempel

I följande exempel läser vi värdet på 2:anndrad och 2ndkolumn. Räkningen av rader och kolumner börjar från 0. Så programmet returnerar 'Software Engineer'.


Hur man läser Excel-fil i 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 } } 

Produktion:

 Software Engineer