logo

Sådan læser du Excel-fil i Java

I dette afsnit skal vi lære, hvordan vi kan læse data fra en excel-fil.

I Java ligner læsning af excel-fil ikke at læse word-fil på grund af celler i excel-fil. JDK leverer ikke direkte API til at læse eller skrive Microsoft Excel- eller Word-dokumenter. Vi er nødt til at stole på tredjepartsbiblioteket, der er Apache POI.

Hvad er Apache POI?

Apache POI (Poor Obfuscation Implementation) er en Java API til at læse og skrive Microsoft-dokumenter i begge formater .xls og .xlsx . Den indeholder klasser og grænseflader. Apache POI-biblioteket giver to implementeringer til læsning af excel-filer:

java samlinger java
    HSSF (Horrible SpreadSheet Format) Implementering:Det angiver en API, der fungerer med Excel 2003 eller tidligere versioner.Implementering af XSSF (XML SpreadSheet Format):Det angiver en API, der fungerer med Excel 2007 eller nyere versioner.

Grænseflader og klasser i Apache POI

Grænseflader

    Arbejdsbog:Det repræsenterer en Excel projektmappe . Det er en grænseflade implementere af HSSF Arbejdsbog og XSSFWorkbook .Ark:Det er en grænseflade, der repræsenterer en Excel regneark . Et ark er en central struktur i en projektmappe, som repræsenterer et gitter af celler. Sheet-grænsefladen udvides java.lang.Iterable .Række:Det er også en grænseflade, der repræsenterer række af regnearket. Row-grænsefladen udvides java.lang.Iterable . Der er to konkrete klasser: HSSFRow og XSSFRow .Celle:Det er en grænseflade. Det er en repræsentation på højt niveau af en celle i en række af regnearket. HSSFCell og XSSFCell implementere cellegrænseflade.

Klasser

XLS klasser

    HSSF Arbejdsbog:Det er en klasse, der repræsenterer XLS-filen.HSSFSark:Det er en klasse, der repræsenterer arket i en XLS-fil.HSSFRow:Det er en klasse, der repræsenterer en række i arket med XLS-fil.HSSFCell:Det er en klasse, der repræsenterer en celle i en række af XLS-fil.

XLSX klasser

    XSSFWorkbook:Det er en klasse, der repræsenterer XLSX-filen.XSSFSark:Det er en klasse, der repræsenterer arket i en XLSX-fil.XSSFRow:Det er en klasse, der repræsenterer en række i arket med XLSX-fil.XSSFCell:Det er en klasse, der repræsenterer en celle i en række af XLSX-fil.

Trin til at læse data fra XLS-fil

Trin 1: Opret et simpelt Java-projekt i Eclipse.

Trin 2: Opret nu en lib-mappe i projektet.

Trin 3: Download og tilføj følgende jar-filer i lib-mappen:

Trin 4: Indstil klassestien:

Højreklik på projektet ->Byg sti ->Tilføj eksterne JAR'er -> vælg alle ovenstående jar-filer -> Anvend og luk.

Trin 5: Opret nu en klassefil med navnet LæsExcelFileDemo og skriv følgende kode i filen.

Trin 6: Opret en excel-fil med navnet 'student.xls' og skriv nogle data ind i den.

java farver

Sådan læser du Excel-fil i Java

Trin 7: Gem og kør programmet.

Eksempel på læsning af 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

Alle trin forbliver de samme undtagen filformat.

Bord: medarbejder.xslx


Sådan læser du Excel-fil i Java

Eksempel på læst excel-fil (.xlsx)

I dette eksempel bruger vi XSSFWorkbook-klassen.

 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æsning af en bestemt celleværdi fra en excel-fil (.xlsx)

Bord: EmployeeData.xlsx

polymorfi java

Sådan læser du Excel-fil i Java

Eksempel

I det følgende eksempel læser vi værdien af ​​2ndrække og 2ndkolonne. Række- og kolonnetællingen starter fra 0. Så programmet returnerer 'Software Engineer'.


Sådan læser du 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