logo

Come leggere file Excel in Java

In questa sezione impareremo come leggere i dati da un file Excel.

In Java, la lettura del file Excel non è simile alla lettura del file Word a causa delle celle nel file Excel. JDK non fornisce API dirette per leggere o scrivere documenti Microsoft Excel o Word. Dobbiamo fare affidamento sulla libreria di terze parti che è Apache POI.

Che cos'è il POI Apache?

Apache POI (Poor Obfuscation Implementation) è un'API Java per leggere e scrivere documenti Microsoft in entrambi i formati .xls E .xlsx . Contiene classi e interfacce. La libreria Apache POI fornisce due implementazioni per la lettura di file Excel:

    Implementazione HSSF (formato foglio di calcolo orribile):Indica un'API che funziona con Excel 2003 o versioni precedenti.Implementazione XSSF (formato foglio di calcolo XML):Indica un'API che funziona con Excel 2007 o versioni successive.

Interfacce e classi in Apache POI

Interfacce

    Cartella di lavoro:Rappresenta un Cartella di lavoro di Excel . È un'interfaccia implementata da Cartella di lavoro HSSF E XSSFLibro di lavoro .Foglio:È un'interfaccia che rappresenta un Foglio di lavoro Excel . Un foglio è una struttura centrale di una cartella di lavoro, che rappresenta una griglia di celle. L'interfaccia del foglio si estende java.lang.Iterable .Riga:È anche un'interfaccia che rappresenta il file riga del foglio di calcolo. L'interfaccia Row si estende java.lang.Iterable . Esistono due classi concrete: HSSFRow E XSSFRow .Cellula:È un'interfaccia. È una rappresentazione di alto livello di a cellula in una riga del foglio di calcolo. HSSFCella E XSSFCell implementare l'interfaccia cellulare.

Classi

Classi XLS

    Cartella di lavoro HSSF:È una classe che rappresenta il file XLS.Foglio HSSF:È una classe che rappresenta il foglio in un file XLS.Fila HSSF:È una classe che rappresenta una riga nel foglio del file XLS.Cella HSSFC:È una classe che rappresenta una cella in una riga di file XLS.

Classi XLSX

    Cartella di lavoro XSSF:È una classe che rappresenta il file XLSX.Foglio XSSF:È una classe che rappresenta il foglio in un file XLSX.XSSFRow:È una classe che rappresenta una riga nel foglio del file XLSX.XSSFCella:È una classe che rappresenta una cella in una riga di file XLSX.

Passaggi per leggere i dati dal file XLS

Passo 1: Crea un semplice progetto Java in Eclipse.

Passo 2: Ora crea una cartella lib nel progetto.

la stringa Java è vuota

Passaggio 3: Scarica e aggiungi i seguenti file jar nella cartella lib:

Passaggio 4: Imposta il percorso della classe:

Fare clic con il tasto destro sul progetto -> Crea percorso -> Aggiungi JAR esterni -> seleziona tutti i file jar sopra -> Applica e chiudi.

Passaggio 5: Ora crea un file di classe con il nome LeggiFileExcelDemo e scrivi il seguente codice nel file.

Passaggio 6: Crea un file Excel con il nome 'student.xls' e scrivici alcuni dati.


Come leggere file Excel in Java

Passaggio 7: Salvare ed eseguire il programma.

Esempio di lettura del file Excel (.xls).

esempio di classe Java
 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(); } } } 

Produzione:

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

Lettura del file XLSX

Tutti i passaggi rimarranno gli stessi tranne il formato del file.

Tavolo: dipendente.xslx


Come leggere file Excel in Java

Esempio di lettura file Excel (.xlsx)

In questo esempio utilizziamo la classe 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(); } } } 

Produzione:

 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 

Leggere un particolare valore di cella da un file Excel (.xlsx)

Tavolo: EmployeeData.xlsx

dattiloscritto ciascuno

Come leggere file Excel in Java

Esempio

Nell'esempio seguente, leggiamo il valore di 2ndriga e il 2ndcolonna. Il conteggio delle righe e delle colonne inizia da 0. Quindi il programma restituisce 'Software Engineer'.


Come leggere file Excel 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 } } 

Produzione:

 Software Engineer