logo

Cómo leer un archivo de Excel en Java

En esta sección, aprenderemos cómo podemos leer datos de un archivo de Excel.

fecha local

En Java, leer un archivo de Excel no es similar a leer un archivo de Word debido a las celdas en el archivo de Excel. JDK no proporciona API directa para leer o escribir documentos de Microsoft Excel o Word. Tenemos que confiar en la biblioteca de terceros que es Apache POI.

¿Qué es el punto de interés de Apache?

Punto de interés de Apache (Implementación deficiente de ofuscación) es una API de Java para leer y escribir documentos de Microsoft en ambos formatos. .xls y .xlsx . Contiene clases e interfaces. La biblioteca Apache POI proporciona dos implementaciones para leer archivos de Excel:

    Implementación de HSSF (horrible formato de hoja de cálculo):Indica una API que funciona con Excel 2003 o versiones anteriores.Implementación de XSSF (formato de hoja de cálculo XML):Indica una API que funciona con Excel 2007 o versiones posteriores.

Interfaces y clases en Apache POI

Interfaces

    Libro de trabajo:Representa un Libro de Excel . Es una interfaz implementada por Libro de trabajo HSSF y Libro de trabajo XSSF .Hoja:Es una interfaz que representa una hoja de trabajo de excel . Una hoja es una estructura central de un libro de trabajo, que representa una cuadrícula de celdas. La interfaz de Hoja se extiende java.lang.Iterable .Fila:También es una interfaz que representa la fila de la hoja de cálculo. La interfaz Row se extiende java.lang.Iterable . Hay dos clases concretas: HSSFFila y XSSFrow .Celúla:Es una interfaz. Es una representación de alto nivel de un celúla en una fila de la hoja de cálculo. HSSFCell y XSSFCell implementar la interfaz celular.

Clases

Clases XLS

    Libro de trabajo HSSF:Es una clase que representa el archivo XLS.Hoja HSSF:Es una clase que representa la hoja en un archivo XLS.HSSFFila:Es una clase que representa una fila en la hoja del archivo XLS.HSSFCell:Es una clase que representa una celda en una fila de un archivo XLS.

Clases XLSX

    Libro de trabajo XSSF:Es una clase que representa el archivo XLSX.Hoja XSSF:Es una clase que representa la hoja en un archivo XLSX.XSSFrow:Es una clase que representa una fila en la hoja del archivo XLSX.XSSFCélula:Es una clase que representa una celda en una fila de un archivo XLSX.

Pasos para leer datos de un archivo XLS

Paso 1: Cree un proyecto Java simple en eclipse.

Paso 2: Ahora, cree una carpeta lib en el proyecto.

Paso 3: Descargue y agregue los siguientes archivos jar en la carpeta lib:

Etapa 4: Establecer la ruta de clase:

ordenar al azar en sql

Haga clic derecho en el proyecto ->Crear ruta ->Agregar archivos JAR externos -> seleccione todos los archivos jar anteriores -> Aplicar y cerrar.

Paso 5: Ahora crea un archivo de clase con el nombre LeerExcelFileDemo y escriba el siguiente código en el archivo.

Paso 6: Cree un archivo de Excel con el nombre 'student.xls' y escriba algunos datos en él.


Cómo leer un archivo de Excel en Java

Paso 7: Guarde y ejecute el programa.

Ejemplo de lectura de un archivo Excel (.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(); } } } 

Producción:

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

Leyendo archivos XLSX

Todos los pasos seguirán siendo los mismos excepto el formato del archivo.

Mesa: empleado.xslx

clase abstracta

Cómo leer un archivo de Excel en Java

Ejemplo de lectura de archivo excel (.xlsx)

En este ejemplo utilizamos la clase XSSFWorkbook.

matriz de cadenas del programa c
 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(); } } } 

Producción:

 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 

Leer un valor de celda particular de un archivo de Excel (.xlsx)

Mesa: DatosEmpleado.xlsx


Cómo leer un archivo de Excel en Java

Ejemplo

En el siguiente ejemplo, leemos el valor de 2Dakota del Nortefila y el 2Dakota del Nortecolumna. El recuento de filas y columnas comienza desde 0. Por lo tanto, el programa devuelve 'Ingeniero de software'.


Cómo leer un archivo de Excel en 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 } } 

Producción:

 Software Engineer