¿Cómo leer datos de Excel protegido con contraseña usando Java y Apache POI?

Apache POI es una biblioteca Java de código abierto para crear y manipular varios formatos de archivo basados ​​en Microsoft Office. Usando POI, uno debería poder realizar operaciones de creación, modificación y visualización/lectura en los siguientes formatos de archivo. Por ejemplo, Java no proporciona soporte integrado para trabajar con archivos de Excel, por lo que debemos buscar API de código abierto para el trabajo. En este artículo, vamos a discutir cómo leer los datos de la hoja de Excel protegida con contraseña usando el POI de Apache. Para cualquier archivo de Excel protegido, necesitábamos automatizarlo y pedir la contraseña, al principio, para manejarnos usando el POI de Apache.

 

Requisitos previos:

  • Cree el proyecto maven en Eclipse.

Para crear un proyecto maven, consulte este artículo .

  • Agregue la dependencia de Apache POI y poi-ooxml en el archivo POM.xml

Punto de interés de Apache:

<dependencia>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>5.2.2</version>
</dependency>
 

Apache poi-ooxml

<dependencia>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi-ooxml</artifactId>
   <version>5.2.2</version>
</dependency>
 

 

Ejemplo

Tengamos un archivo de Excel que esté protegido por la contraseña «geeks». Contiene los siguientes datos.

 

Tenemos que abrir el archivo protegido y leer los datos en el archivo usando Apache POI. Para abrir un archivo protegido, Apache POI proporciona el siguiente método » workbookfactory «:

XSSFWorkbook libro de trabajo=(XSSFWorkbook)WorkbookFactory.create(archivo,contraseña);

Programa para leer datos de Excel protegido con contraseña usando Java y Apache POI

Java

import org.testng.annotations.Test;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
  
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.WorkbookFactory;
  
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  
public class Geeks {
    @Test
    public void geekforgeeks() throws IOException{
          
         FileInputStream file = new FileInputStream("C:\\Users\\ADMIN\\Desktop\\geeks.xlsx");
         String password="geeks";
           
         XSSFWorkbook workbook=(XSSFWorkbook)WorkbookFactory.create(file,password);
         XSSFSheet sheet=workbook.getSheet("Sheet1");
              
         Iterator<Row> iterator=sheet.iterator();
        
         while(iterator.hasNext()) {
            Row nextrow=iterator.next();
            Iterator<Cell> celliterator=nextrow.cellIterator();
             
            while(celliterator.hasNext()) {
                Cell cell=celliterator.next();
                switch(cell.getCellType())
                {
                case STRING:
                    System.out.print(cell.getStringCellValue()); break;
  
                case NUMERIC:
                    System.out.print(cell.getNumericCellValue()); break;
  
                }
                System.out.print("|");
            }
          System.out.println();
        }  
    }
}

Código Explicación

  • Abra el archivo de Excel en el flujo de entrada y almacene la contraseña como una string.
  • Apache POI proporciona el método workbookfactory para abrir los archivos protegidos, en este método estamos pasando el archivo y la contraseña.

WorkbookFactory.create(archivo,contraseña);

  • Ahora lea los datos de la celda usando Iterator.
  • Imprima los datos en la consola según el tipo de datos usando un caso de cambio.

Producción

Después de ejecutar el código, obtenemos todos los valores de las celdas en la consola, como se menciona a continuación.

Output

 

Publicación traducida automáticamente

Artículo escrito por allwink45 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *