Apache POI es una API popular que permite a los programadores crear, modificar y mostrar archivos de MS Office utilizando programas Java. Es una biblioteca de código abierto desarrollada y distribuida por Apache Software Foundation para diseñar o modificar archivos de Microsoft Office utilizando el programa Java. Contiene clases y métodos para decodificar los datos de entrada del usuario o un archivo en documentos de MS Office.
Componentes de Apache POI
Apache POI contiene clases y métodos para trabajar en todos los documentos compuestos OLE2 de MS Office. La lista de componentes de esta API se proporciona a continuación.
POIFS(Sistema de archivos de implementación de ofuscación deficiente): este componente es el factor básico de todos los demás elementos de PDI. Se utiliza para leer distintos archivos de forma explícita.
HSSF (Formato de hoja de cálculo horrible): se utiliza para leer y escribir en formato xls de archivos MS-Excel.
XSSF (Formato de hoja de cálculo XML): se utiliza para el formato de archivo xlsx de MS-Excel.
HPSF (Formato de conjunto de propiedades horrible): se utiliza para extraer conjuntos de propiedades de los archivos de MS-Office.
HWPF (Formato de procesador de texto horrible): se utiliza para leer y escribir archivos de extensión doc de MS-Word.
XWPF (Formato de procesador de textos XML): se utiliza para leer y escribir archivos de extensión docx de MS-Word.
HSLF (Formato de diseño de diapositiva horrible): se utiliza para leer, crear y editar presentaciones de PowerPoint.
HDGF (Formato de diagrama horrible): contiene clases y métodos para archivos binarios de MS-Visio.
HPBF (Formato Horrible PuBlisher): se utiliza para leer y escribir archivos de MS-Publisher.
Es una clase de alto nivel en el paquete org.apache.poi.hssf.usermodel. Implementa la interfaz del libro de trabajo y se utiliza para archivos de Excel en formato .xls.
Es una clase que se utiliza para representar formatos de archivo de Excel de alto y bajo nivel. Pertenece al paquete org.apache.xssf.usemodel e implementa la interfaz Workbook.
Esta es una clase del paquete org.apache.poi.hssf.usermodel. Puede crear hojas de cálculo de Excel y permite formatear el estilo de la hoja y los datos de la hoja.
Esta es una clase que representa una representación de alto nivel de una hoja de cálculo de Excel. Está en el paquete org.apache.poi.hssf.usermodel.
Esta es una clase del paquete org.apache.poi.xssf.usermodel. Implementa la interfaz Row, por lo que puede crear filas en una hoja de cálculo.
Esta es una clase del paquete org.apache.poi.xssf.usermodel. Implementa la interfaz Cell. Es una representación de alto nivel de celdas en las filas de una hoja de cálculo.
Esta es una clase del paquete org.apache.poi.xssf.usermodel. Proporcionará información posible sobre el formato del contenido en una celda de una hoja de cálculo. También proporciona opciones para modificar ese formato. Implementa la interfaz CellStyle.
Esta es una clase del paquete org.apache.poi.hssf.util. Proporciona diferentes colores como clases anidadas. Por lo general, estas clases anidadas se representan mediante sus propios índices. Implementa la interfaz Color.
Esta es una clase del paquete org.apache.poi.xssf.usermodel. Implementa la interfaz de fuentes y, por lo tanto, puede manejar diferentes fuentes en un libro de trabajo.
Esta es una clase del paquete org.apache.poi.xssf.usermodel. Implementa la interfaz Hyperlink. Se utiliza para establecer un hipervínculo al contenido de la celda de una hoja de cálculo.
Esta es una clase del paquete org.apache.poi.xssf.usermodel. Implementa la interfaz CreationHelper. Se utiliza como clase de apoyo para la evaluación de fórmulas y la configuración de hipervínculos.
Esta es una clase del paquete org.apache.poi.xsssf.usermodel. Implementa la interfaz PrintSetup. Se utiliza para configurar el tamaño, el área, las opciones y la configuración de la página de impresión.
El siguiente fragmento de código se utiliza para crear una hoja de cálculo.
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
El siguiente fragmento de código se utiliza para crear una fila.
XSSFRow row = spreadsheet.createRow((short)1);
El siguiente fragmento de código se utiliza para crear una celda.
//create new workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//create spreadsheet with a name
XSSFSheet spreadsheet = workbook.createSheet("new sheet");
//create first row on a created spreadsheet
XSSFRow row = spreadsheet.createRow(0);
//create first cell on created row
XSSFCell cell = row.createCell(0);
Tipos de células
El tipo de celda especifica si una celda puede contener cadenas, valores numéricos o fórmulas. Una celda de cadena no puede contener valores numéricos y una celda numérica no puede contener cadenas. A continuación se muestran los tipos de celdas, sus valores y la sintaxis de tipos.
Tipo de valor de celda | Tipo de sintaxis |
---|---|
Valor de celda en blanco | XSSFCell.CELL_TYPE_BLANK |
Valor de celda booleana | XSSFCell.CELL_TYPE_BOOLEAN |
Valor de celda de error | XSSFCell.CELL_TYPE_ERROR |
Valor de celda numérico | XSSFCell.CELL_TYPE_NUMERIC |
Valor de celda de cadena | XSSFCell.CELL_TYPE_STRING |
La clase XSSFCellStyle se usa para diseñar una celda. El siguiente fragmento de código se puede utilizar para establecer la alineación de la celda en "Arriba a la izquierda".
XSSFCellStyle style1 = workbook.createCellStyle();
spreadsheet.setColumnWidth(0, 8000);
style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
cell.setCellValue("Top Left");
cell.setCellStyle(style1);
La clase XSSFFont se usa para agregar una fuente a una celda. El siguiente fragmento de código se puede utilizar para establecer el color de fondo de una celda en "Verde".
//Create a new font and alter it.
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 30);
font.setFontName("IMPACT");
font.setItalic(true);
font.setColor(HSSFColor.BRIGHT_GREEN.index);
//Set font into style
XSSFCellStyle style = workbook.createCellStyle();
style.setFont(font);
La clase XSSFCellStyle se puede utilizar para rotar una celda. El siguiente fragmento de código se puede utilizar para establecer la alineación del texto de la celda en un ángulo específico.
//90 degrees
XSSFCellStyle myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 90);
cell = row.createCell(5);
cell.setCellValue("90D angle");
cell.setCellStyle(myStyle);
XSSFCell.CELL_TYPE_FORMULA se puede usar en la celda como celda de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("SUM(C2:C3)");
XSSFCell.CELL_TYPE_FORMULA se puede usar en la celda como celda de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("POWER(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("POWER(C2:C3)");
XSSFCell.CELL_TYPE_FORMULA se puede usar en la celda como celda de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("MAX(C2:C3)" );
cell = row.createCell(3);
cell.setCellValue("MAX(C2:C3)");
XSSFCell.CELL_TYPE_FORMULA se puede usar en la celda como celda de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("FACT(C2)" );
cell = row.createCell(3);
cell.setCellValue("FACT(C2)");
XSSFCell.CELL_TYPE_FORMULA se puede usar en la celda como celda de fórmula.
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SQRT(C2)" );
cell = row.createCell(3);
cell.setCellValue("SQRT(C2)");
XSSFHyperlink se puede utilizar para agregar un hipervínculo a una celda.
CreationHelper createHelper = workbook.getCreationHelper();
XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
link.setAddress("http://www.tutorialspoint.com/" );
cell.setHyperlink((XSSFHyperlink) link);
El siguiente fragmento de código demuestra la configuración del área imprimible de un Excel utilizando Apache POI.
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook
.createSheet("Print Area");
//set print area with indexes
workbook.setPrintArea(
0, //sheet index
0, //start column
5, //end column
0, //start row
5 //end row
);
//set paper size
spreadsheet.getPrintSetup().setPaperSize(
XSSFPrintSetup.A4_PAPERSIZE);
//set display grid lines or not
spreadsheet.setDisplayGridlines(true);
//set print grid lines or not
spreadsheet.setPrintGridlines(true);