logo

Hvordan lese Excel-fil i Java

I denne delen skal vi lære hvordan vi kan lese data fra en excel-fil.

I Java ligner ikke lesing av excel-fil på å lese word-fil på grunn av celler i excel-fil. JDK tilbyr ikke direkte API for å lese eller skrive Microsoft Excel- eller Word-dokumenter. Vi må stole på tredjepartsbiblioteket som er Apache POI.

Hva er Apache POI?

Apache POI (Poor Obfuscation Implementation) er et Java API for lesing og skriving av Microsoft-dokumenter i begge formatene .xls og .xlsx . Den inneholder klasser og grensesnitt. Apache POI-biblioteket tilbyr to implementeringer for lesing av Excel-filer:

java samlinger java
    Implementering av HSSF (Horrible SpreadSheet Format):Det angir et API som fungerer med Excel 2003 eller tidligere versjoner.Implementering av XSSF (XML SpreadSheet Format):Det angir et API som fungerer med Excel 2007 eller nyere versjoner.

Grensesnitt og klasser i Apache POI

Grensesnitt

    Arbeidsbok:Den representerer en Excel arbeidsbok . Det er et grensesnitt implementere av HSSF Arbeidsbok og XSSF-arbeidsbok .Ark:Det er et grensesnitt som representerer en Excel regneark . Et ark er en sentral struktur i en arbeidsbok, som representerer et rutenett av celler. Sheet-grensesnittet utvides java.lang.Iterable .Rad:Det er også et grensesnitt som representerer rad av regnearket. Row-grensesnittet utvides java.lang.Iterable . Det er to betongklasser: HSSFRow og XSSFRow .Celle:Det er et grensesnitt. Det er en representasjon på høyt nivå av en celle på rad i regnearket. HSSFCell og XSSFCell implementere cellegrensesnitt.

Klasser

XLS-klasser

    HSSF Arbeidsbok:Det er en klasse som representerer XLS-filen.HSSFSark:Det er en klasse som representerer arket i en XLS-fil.HSSFRow:Det er en klasse som representerer en rad i arket med XLS-fil.HSSFCell:Det er en klasse som representerer en celle i en rad med XLS-fil.

XLSX-klasser

    XSSF-arbeidsbok:Det er en klasse som representerer XLSX-filen.XSSFSark:Det er en klasse som representerer arket i en XLSX-fil.XSSFRow:Det er en klasse som representerer en rad i arket med XLSX-fil.XSSFCell:Det er en klasse som representerer en celle i en rad med XLSX-fil.

Trinn for å lese data fra XLS-fil

Trinn 1: Lag et enkelt Java-prosjekt i Eclipse.

Steg 2: Opprett nå en lib-mappe i prosjektet.

Trinn 3: Last ned og legg til følgende jar-filer i lib-mappen:

Trinn 4: Angi klassebanen:

Høyreklikk på prosjektet ->Bygg bane ->Legg til eksterne JAR-er -> velg alle jar-filene ovenfor -> Bruk og lukk.

Trinn 5: Lag nå en klassefil med navnet LesExcelFileDemo og skriv følgende kode i filen.

Trinn 6: Lag en excel-fil med navnet 'student.xls' og skriv noen data inn i den.

java farger

Hvordan lese Excel-fil i Java

Trinn 7: Lagre og kjør programmet.

Eksempel på lesing av 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(); } } } 

Produksjon:

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

Leser XLSX-fil

Alle trinn forblir de samme bortsett fra filformat.

Bord: ansatt.xslx


Hvordan lese Excel-fil i Java

Eksempel på les excel-fil (.xlsx)

I dette eksemplet bruker 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(); } } } 

Produksjon:

 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 

Lese en bestemt celleverdi fra en excel-fil (.xlsx)

Bord: EmployeeData.xlsx

rund matematikk java

Hvordan lese Excel-fil i Java

Eksempel

I det følgende eksempelet leser vi verdien av 2ndrad og 2ndkolonne. Rad- og kolonnetellingen starter fra 0. Så programmet returnerer 'Software Engineer'.


Hvordan lese 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 } } 

Produksjon:

 Software Engineer