Apache POI - Guía rápida

Muchas veces, se requiere una aplicación de software para generar informes en formato de archivo de Microsoft Excel. A veces, incluso se espera que una aplicación reciba archivos de Excel como datos de entrada. Por ejemplo, se requerirá una aplicación desarrollada para el departamento de Finanzas de una empresa para generar todos sus resultados en Excel.

Cualquier programador de Java que quiera producir archivos de MS Office como salida debe usar una API predefinida y de solo lectura para hacerlo.

¿Qué es Apache POI?

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 usa para leer y escribir xls formato de archivos MS-Excel.

  • XSSF (Formato de hoja de cálculo XML): se utiliza para xlsx formato de archivo de MS-Excel.

  • HPSF (Formato de conjunto de propiedades horribles): se utiliza para extraer property sets de los archivos de MS-Office.

  • HWPF (Formato de procesador de texto horrible): se usa para leer y escribir doc archivos de extensión de MS-Word.

  • XWPF (Formato de procesador de textos XML): se utiliza para leer y escribir docx archivos de extensión de MS-Word.

  • HSLF (Formato de diseño de diapositivas horrible): se utiliza para leer, crear y editar presentaciones de PowerPoint.

  • HDGF (Formato de diagrama horrible): contiene clases y métodos para MS-Visio archivos binarios.

  • HPBF (Horrible PuBlisher Format) - Se usa para leer y escribir MS-Publisher archivos.

Este tutorial lo guía a través del proceso de trabajar en archivos de Excel usando Java. Por lo tanto, la discusión se limita a los componentes HSSF y XSSF.

Note - Las versiones anteriores de POI admiten formatos de archivo binarios como doc, xls, ppt, etc. A partir de la versión 3.5, POI admite formatos de archivo OOXML de MS-Office como docx, xlsx, pptx, etc.

Al igual que Apache POI, existen otras bibliotecas proporcionadas por varios proveedores para la generación de archivos de Excel. Éstas incluyenAspose cells for Java por Aspose, JXL por Commons Libraries, y JExcel por Team Dev.

Este capítulo lo lleva a través de algunas de las variantes de la API de Excel de Java y sus características. Hay muchos proveedores que proporcionan API relacionadas con Java Excel; algunos de ellos se consideran en este capítulo.

Aspose Cells para Java

Aspose Cells para Java es una API de Java Excel con licencia pura desarrollada y distribuida por el proveedor Aspose. La última versión de esta API es 8.1.2, lanzada en julio de 2014. Es una API rica y pesada (combinación de clases simples de Java y clases AWT) para diseñar el componente de Excel que puede leer, escribir y manipular hojas de cálculo.

Los usos comunes de esta API son los siguientes:

  • Informes de Excel, cree informes dinámicos de Excel
  • Representación e impresión de Excel de alta fidelidad
  • Importar y exportar datos de hojas de cálculo de Excel
  • Genere, edite y convierta hojas de cálculo

JXL

JXL es un marco de trabajo de terceros diseñado para Selenium que admite la automatización basada en datos en navegadores web (actualización automática de datos en navegadores web). Sin embargo, también se utiliza como una biblioteca de soporte común para la API de JExcel porque tiene características básicas para crear, leer y escribir hojas de cálculo.

Las características básicas son las siguientes:

  • Genera archivos de Excel
  • Importar datos de libros de trabajo y hojas de cálculo
  • Obtenga el número total de filas y columnas

Note - JXL solo admite el formato de archivo .xls y no puede manejar grandes volúmenes de datos.

JExcel

JExcel es una API con licencia pura proporcionada por Team Dev. Con esto, los programadores pueden leer, escribir, mostrar y modificar fácilmente libros de Excel en ambos.xls y .xlsxformatos. Esta API se puede integrar fácilmente con Java Swing y AWT. La última versión de esta API es Jexcel-2.6.12, lanzada en 2009.

Las principales características son las siguientes:

  • Automatice la aplicación de Excel, libros de trabajo, hojas de cálculo, etc.
  • Incrustar libros de trabajo en una aplicación Java Swing como componente normal de Swing
  • Agregar detectores de eventos a libros de trabajo y hojas de cálculo
  • Agregue controladores de eventos para controlar el comportamiento de los eventos del libro de trabajo y la hoja de cálculo
  • Agregue pares nativos para desarrollar funciones personalizadas

PDI de Apache

Apache POI es una biblioteca 100% de código abierto proporcionada por Apache Software Foundation. La mayoría de los desarrolladores de aplicaciones de pequeña y mediana escala dependen en gran medida de Apache POI (HSSF + XSSF). Es compatible con todas las funciones básicas de las bibliotecas de Excel; sin embargo, la renderización y la extracción de texto son sus principales características.

Este capítulo lo lleva a través del proceso de configuración de Apache POI en sistemas basados ​​en Windows y Linux. Apache POI se puede instalar e integrar fácilmente con su entorno Java actual siguiendo unos sencillos pasos sin ningún procedimiento de configuración complejo. Se requiere la administración de usuarios durante la instalación.

Requisitos del sistema

JDK Java SE 2 JDK 1.5 o superior
Memoria 1 GB de RAM (recomendado)
Espacio del disco Sin requisito mínimo
Versión del sistema operativo Windows XP o superior, Linux

Procedamos ahora con los pasos para instalar Apache POI.

Paso 1: Verifique su instalación de Java

En primer lugar, debe tener el kit de desarrollo de software Java (SDK) instalado en su sistema. Para verificar esto, ejecute cualquiera de los dos comandos dependiendo de la plataforma en la que esté trabajando.

Si la instalación de Java se ha realizado correctamente, mostrará la versión actual y la especificación de su instalación de Java. En la siguiente tabla se proporciona un resultado de muestra.

Plataforma Mando Salida de muestra
Ventanas

Abra la consola de comandos y escriba -

\>java –version

Versión de Java "1.7.0_60"

Entorno de tiempo de ejecución Java (TM) SE (compilación 1.7.0_60-b19)

VM de servidor Java Hotspot (TM) de 64 bits (compilación 24.60-b09, modo mixto)

Linux

Abra el terminal de comando y escriba -

$java –version

versión de Java "1.7.0_25"

Entorno de tiempo de ejecución abierto de JDK (rhel-2.3.10.4.el6_4-x86_64)

Abra la máquina virtual del servidor JDK de 64 bits (compilación 23.7-b01, modo mixto)

  • Suponemos que los lectores de este tutorial tienen la versión 1.7.0_60 de Java SDK instalada en su sistema.

  • En caso de que no tenga Java SDK, descargue su versión actual desde https://www.oracle.com/technetwork/java/javase/downloads/index.html y tenerlo instalado.

Paso 2: configura tu entorno Java

Configure la variable de entorno JAVA_HOME para que apunte a la ubicación del directorio base donde está instalado Java en su máquina. Por ejemplo,

No Señor. Plataforma y descripción
1

Windows

Establezca JAVA_HOME en C: \ ProgramFiles \ java \ jdk1.7.0_60

2

Linux

Exportar JAVA_HOME = / usr / local / java-current

Agregue la ruta completa de la ubicación del compilador de Java a la ruta del sistema.

No Señor. Plataforma y descripción
1

Windows

Agregue la cadena "C: \ Archivos de programa \ Java \ jdk1.7.0_60 \ bin" al final de la variable de sistema PATH.

2

Linux

Exportar RUTA = $ RUTA: $ JAVA_HOME / bin /

Ejecuta el comando java -version desde el símbolo del sistema como se explicó anteriormente.

Paso 3: instalar la biblioteca de puntos de interés de Apache

Descargue la última versión de Apache POI de https://poi.apache.org/download.htmly descomprima su contenido en una carpeta desde donde las bibliotecas necesarias se pueden vincular a su programa Java. Supongamos que los archivos se recopilan en una carpeta en la unidad C.

Las siguientes imágenes muestran los directorios y la estructura de archivos dentro de la carpeta descargada.

Agrega la ruta completa de los cinco jars como se resalta en la imagen de arriba en CLASSPATH.

No Señor. Plataforma y descripción
1

Windows

Agregue las siguientes cadenas al final de la variable de usuario

CLASSPATH -

"C: \ poi-3.9 \ poi-3.9-20121203.jar;"

"C: \ poi-3.9 \ poi-ooxml-3.9-20121203.jar;"

"C: \ poi-3.9 \ poi-ooxml-schemas-3.9-20121203.jar;"

"C: \ poi-3.9 \ ooxml-lib \ dom4j-1.6.1.jar;"

"C: \ poi-3.9 \ ooxml-lib \ xmlbeans-2.3.0.jar;.;"

2

Linux

Exportar CLASSPATH = $ CLASSPATH:

/usr/share/poi-3.9/poi-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:

/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:

/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar

Este capítulo explica algunas clases y métodos de la API de POI de Apache que son fundamentales para trabajar con archivos de Excel utilizando programas Java.

Libro de trabajo

Esta es la superinterfaz de todas las clases que crean o mantienen libros de Excel. Pertenece a laorg.apache.poi.ss.usermodelpaquete. Las dos clases que implementan esta interfaz son las siguientes:

  • HSSFWorkbook- Esta clase tiene métodos para leer y escribir archivos de Microsoft Excel en formato .xls. Es compatible con las versiones 97-2003 de MS-Office.

  • XSSFWorkbook- Esta clase tiene métodos para leer y escribir archivos xml de Microsoft Excel y OpenOffice en formato .xls o .xlsx. Es compatible con las versiones 2007 o posteriores de MS-Office.

HSSFWorkbook

Es una clase de alto nivel bajo el org.apache.poi.hssf.usermodelpaquete. Implementa laWorkbookinterfaz y se utiliza para archivos de Excel en formato .xls. A continuación se enumeran algunos de los métodos y constructores de esta clase.

Constructores de clases

No Señor. Constructor y descripción
1

HSSFWorkbook()

Crea un nuevo objeto HSSFWorkbook desde cero.

2

HSSFWorkbook(DirectoryNode directory, boolean preserveNodes)

Crea un nuevo objeto de libro de trabajo HSSFW dentro de un directorio específico.

3

HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes)

Dado un objeto POIFSFileSystem y un directorio específico dentro de él, crea un objeto SSFWorkbook para leer un libro de trabajo específico.

4

HSSFWorkbook(java.io.InputStream s)

Crea un nuevo objeto HSSFWorkbook utilizando un flujo de entrada.

5

HSSFWorkbook(java.io.InputStream s, boolean preserveNodes)

Construye un sistema de archivos POI alrededor de su flujo de entrada.

6

HSSFWorkbook(POIFSFileSystem fs)

Construye un nuevo objeto HSSFWorkbook utilizando un objeto POIFSFileSystem.

7

HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes)

Dado un objeto POIFSFileSystem, crea un nuevo objeto HSSFWorkbook para leer un libro específico.

Los parámetros de uso frecuente dentro de estos constructores son:

  • directory - Es el directorio del sistema de archivos POI desde el que se procesa.

  • fs - Es el sistema de archivos POI que contiene la secuencia del libro de trabajo.

  • preservenodes- Este es un parámetro opcional que decide si preservar otros nodos como macros. Consume mucha memoria ya que almacena todo el POIFileSystem en la memoria (si está configurado).

Note- La clase HSSFWorkbook contiene varios métodos; sin embargo, solo son compatibles con el formato xls. En este tutorial, la atención se centra en la última versión de los formatos de archivo de Excel. Por lo tanto, los métodos de clase de HSSFWorkbook no se enumeran aquí. Si necesita estos métodos de clase, consulte la API de clase POI-HSSFWorkbook enhttps://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html.

XSSFWorkbook

Es una clase que se utiliza para representar formatos de archivo de Excel de alto y bajo nivel. Pertenece a laorg.apache.xssf.usemodel empaquetar e implementar el Workbookinterfaz. A continuación se enumeran los métodos y constructores de esta clase.

Constructores de clases

No Señor. Constructor y descripción
1

XSSFWorkbook()

Crea un nuevo objeto XSSFworkbook desde cero.

2

XSSFWorkbook(java.io.File file)

Construye un objeto XSSFWorkbook a partir de un archivo determinado.

3

XSSFWorkbook(java.io.InputStream is)

Construye un objeto XSSFWorkbook, almacenando en búfer todo el flujo de entrada en la memoria y luego abriendo un objeto OPCPackage para él.

4

XSSFWorkbook(java.lang.String path)

Construye un objeto XSSFWorkbook dada la ruta completa de un archivo.

Métodos de clase

No Señor. Método y descripción
1

createSheet()

Crea una hoja XSSFS para este libro de trabajo, la agrega a las hojas y devuelve la representación de alto nivel.

2

createSheet(java.lang.String sheetname)

Crea una nueva hoja para este Libro de trabajo y devuelve la representación de alto nivel.

3

createFont()

Crea una nueva fuente y la agrega a la tabla de fuentes del libro.

4

createCellStyle()

Crea un nuevo XSSFCellStyle y lo agrega a la tabla de estilos del libro.

5

createFont()

Crea una nueva fuente y la agrega a la tabla de fuentes del libro.

6

setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow,int endRow)

Establece el área de impresión de una hoja determinada según los parámetros especificados.

Para los métodos restantes de esta clase, consulte el documento API completo en: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html. para obtener la lista completa de métodos.

Sábana

La hoja es una interfaz bajo el org.apache.poi.ss.usermodelpackage y es una superinterfaz de todas las clases que crea hojas de cálculo de alto o bajo nivel con nombres específicos. El tipo más común de hoja de cálculo es la hoja de trabajo, que se representa como una cuadrícula de celdas.

Hoja HSSFS

Esta es una clase bajo el org.apache.poi.hssf.usermodelpaquete. Puede crear hojas de cálculo de Excel y permite formatear el estilo de la hoja y los datos de la hoja.

Constructores de clases

No Señor. Constructor y descripción
1

HSSFSheet(HSSFWorkbook workbook)

Crea una nueva hoja HSSFS llamada por HSSFWorkbook para crear una hoja desde cero.

2

HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet)

Crea una hoja HSSFS que representa el objeto de hoja dado.

XSSFSheet

Esta es una clase que representa una representación de alto nivel de una hoja de cálculo de Excel. Está bajoorg.apache.poi.hssf.usermodel paquete.

Constructores de clases

No Señor. Constructor y descripción
1

XSSFSheet()

Crea una nueva hoja XSSFS - llamada por XSSFWorkbook para crear una hoja desde cero.

2

XSSFSheet(PackagePart part, PackageRelationship rel)

Crea una hoja XSSFS que representa la parte y la relación del paquete dadas.

Métodos de clase

No Señor. Método y descripción
1

addMergedRegion(CellRangeAddress region)

Agrega una región combinada de células (por lo tanto, esas células forman una).

2

autoSizeColumn(int column)

Ajusta el ancho de la columna para adaptarse al contenido.

3

iterator()

Este método es un alias para rowIterator () para permitir bucles foreach

4

addHyperlink(XSSFHyperlink hyperlink)

Registra un hipervínculo en la colección de hipervínculos de esta hoja

Para los métodos restantes de esta clase, consulte la API completa en: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html.

Fila

Esta es una interfaz bajo el org.apache.poi.ss.usermodelpaquete. Se utiliza para la representación de alto nivel de una fila de una hoja de cálculo. Es una superinterfaz de todas las clases que representan filas en la biblioteca de puntos de interés.

XSSFRow

Esta es una clase bajo el org.apache.poi.xssf.usermodelpaquete. Implementa la interfaz Row, por lo que puede crear filas en una hoja de cálculo. A continuación se enumeran los métodos y constructores de esta clase.

Métodos de clase

No Señor. Método y descripción
1

createCell(int columnIndex)

Crea nuevas celdas dentro de la fila y la devuelve.

2

setHeight(short height)

Establece la altura en unidades cortas.

Para los métodos restantes de esta clase, siga el enlace dado https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html

Celda

Esta es una interfaz bajo el org.apache.poi.ss.usermodelpaquete. Es una superinterfaz de todas las clases que representan celdas en las filas de una hoja de cálculo.

Las celdas pueden tener varios atributos como en blanco, numérico, fecha, error, etc. Las celdas deben tener sus propios números (basados ​​en 0) antes de agregarse a una fila.

XSSFCell

Esta es una clase bajo el org.apache.poi.xssf.usermodelpaquete. Implementa la interfaz Cell. Es una representación de alto nivel de celdas en las filas de una hoja de cálculo.

Campo Resumen

A continuación se enumeran algunos de los campos de la clase XSSFCell junto con su descripción.

No Señor. Tipo de celda y descripción
1

CELL_TYPE_BLANK

Representa celda en blanco

2

CELL_TYPE_BOOLEAN

Representa celda booleana (verdadero o falso)

3

CELL_TYPE_ERROR

Representa el valor de error en una celda

4

CELL_TYPE_FORMULA

Representa el resultado de la fórmula en una celda

5

CELL_TYPE_NUMERIC

Representa datos numéricos en una celda.

6

CELL_TYPE_STRING

Representa una cadena (texto) en una celda

Métodos de clase

No Señor. Método y descripción
1

setCellStyle(CellStyle style)

Establece el estilo de la celda.

2

setCellType(int cellType)

Establece el tipo de celdas (numéricas, de fórmula o de cadena).

3

setCellValue(boolean value)

Establece un valor booleano para la celda.

4

setCellValue(java.util.Calendar value)

Establece un valor de fecha para la celda.

5

setCellValue(double value)

Establece un valor numérico para la celda.

6

setCellValue(java.lang.String str)

Establece un valor de cadena para la celda.

7

setHyperlink(Hyperlink hyperlink)

Asigna un hipervínculo a esta celda.

Para los métodos y campos restantes de esta clase, visite el siguiente enlace: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html

XSSFCellStyle

Esta es una clase bajo el org.apache.poi.xssf.usermodelpaquete. 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.

Campo Resumen

La siguiente tabla enumera algunos campos que se heredan de la interfaz CellStyle.

No Señor. Campo Descripción
1

ALIGN_CENTER

Alinear al centro el contenido de la celda

2

ALIGN_CENTER_SELECTION

Alineación horizontal de selección central

3

ALIGN_FILL

Ajuste de celda al tamaño del contenido

4

ALIGN_JUSTIFY

Ajustar el contenido de la celda a su ancho

5

ALIGN_LEFT

Alinear a la izquierda el contenido de la celda

6

ALIGN_RIGHT

Alinear a la derecha el contenido de la celda

7

BORDER_DASH_DOT

Estilo de celda con guión y punto

8

BORDER_DOTTED

Estilo de celda con borde punteado

9

BORDER_DASHED

Estilo de celda con borde punteado

10

BORDER_THICK

Estilo de celda con borde grueso

11

BORDER_THIN

Estilo de celda con borde delgado

12

VERTICAL_BOTTOM

Alinear el contenido de la celda en la parte inferior vertical

13

VERTICAL_CENTER

Alinear el centro vertical del contenido de la celda

15

VERTICAL_JUSTIFY

Alinear y justificar el contenido de la celda verticalmente

dieciséis

VERTICAL_TOP

Alineación vertical alineada superior

Constructores de clases

No Señor. Constructor y descripción
1

XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource, ThemesTable theme)

Crea un estilo de celda a partir de las piezas suministradas

2

XSSFCellStyle(StylesTable stylesSource)

Crea un estilo de celda vacía

Métodos de clase

S. No Método y descripción
1

setAlignment(short align)

Establece el tipo de alineación horizontal de la celda.

2

setBorderBottom(short border)

Establece el tipo de borde para el borde inferior de la celda

3

setBorderColor(XSSFCellBorder.BorderSide side, XSSFColor color)

Establece el color del borde seleccionado

4

setBorderLeft(Short border)

Establece el tipo de borde para el borde izquierdo de la celda

5

setBorderRight(short border)

Establece el tipo de borde para el borde derecho de la celda

6

setBorderTop(short border)

Establece el tipo de borde para el borde superior de la celda

7

setFillBackgroundColor(XSSFColor color)

Establece el color de relleno de fondo representado como un valor XSSFColor.

8

setFillForegroundColor(XSSFColor color)

Establece el color de relleno de primer plano representado como un valor XSSFColor.

9

setFillPattern(short fp)

Especifica la información de relleno de celda para rellenos de celda de patrón y color sólido.

10

setFont(Font font)

Establece la fuente para este estilo.

11

setRotation(short rotation)

Establece el grado de rotación del texto en la celda.

12

setVerticalAlignment(short align)

Establece el tipo de alineación vertical de la celda.

Para los métodos y campos restantes en esta clase, vaya al siguiente enlace: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCellStyle.html

HSSFColor

Esta es una clase bajo el org.apache.poi.hssf.utilpaquete. Proporciona diferentes colores como clases anidadas. Por lo general, estas clases anidadas se representan mediante sus propios índices. Implementa la interfaz Color.

Clases anidadas

Todas las clases anidadas de esta clase son estáticas y cada clase tiene su índice. Estas clases de color anidadas se utilizan para el formato de celda, como el contenido, el borde, el primer plano y el fondo de la celda. A continuación se enumeran algunas de las clases anidadas.

No Señor. Nombres de clases (colores)
1 HSSFColor.AQUA
2 HSSFColor.AUTOMÁTICO
3 HSSFColor.BLACK
4 HSSFColor.BLUE
5 HSSFColor.BRIGHT_GREEN
6 HSSFColor.BRIGHT_GRAY
7 HSSFColor.CORAL
8 HSSFColor.DARK_BLUE
9 HSSFColor.DARK_GREEN
10 HSSFColor.SKY_BLUE
11 HSSFColor.WHITE
12 HSSFColor.AMARILLO

Métodos de clase

Solo un método de esta clase es importante y se utiliza para obtener el valor del índice.

No Señor. Método y descripción
1

getIndex()

Este método se utiliza para obtener el valor de índice de una clase anidada.

Para los métodos restantes y las clases anidadas, consulte el siguiente enlace: https://poi.apache.org/apidocs/org/apache/poi/hssf/util/HSSFColor.html

XSSFColor

Esta es una clase bajo el org.apache.poi.xssf.usermodelpaquete. Se utiliza para representar el color en una hoja de cálculo. Implementa la interfaz Color. A continuación se enumeran algunos de sus métodos y constructores.

Constructores de clases

No Señor. Constructor y descripción
1

XSSFColor()

Crea una nueva instancia de XSSFColor.

2

XSSFColor(byte[] rgb)

Crea una nueva instancia de XSSFColor usando RGB.

3

XSSFColor(java.awt.Color clr)

Crea una nueva instancia de XSSFColor usando la clase Color del paquete awt.

Métodos de clase

No Señor. Método y descripción
1

setAuto(boolean auto)

Establece un valor booleano para indicar que ctColor es automático y el sistema ctColor es dependiente.

2

setIndexed(int indexed)

Establece el valor ctColor indexado como sistema ctColor.

Para los métodos restantes, visite el siguiente enlace: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFColor.html

XSSFFont

Esta es una clase bajo el org.apache.poi.xssf.usermodelpaquete. Implementa la interfaz de fuentes y, por lo tanto, puede manejar diferentes fuentes en un libro de trabajo.

Constructor de clases

No Señor. Constructor y descripción
1

XSSFFont()

Crea una nueva instancia de XSSFont.

Métodos de clase

No Señor. Método y descripción
1

setBold(boolean bold)

Establece un valor booleano para el atributo 'negrita'.

2

setColor(short color)

Establece el color indexado para la fuente.

3

setColor(XSSFColor color)

Establece el color de la fuente en el valor de color Standard Alpha RGB.

4

setFontHeight(short height)

Establece la altura de la fuente en puntos.

5

setFontName(java.lang.String name)

Establece el nombre de la fuente.

6

setItalic(boolean italic)

Establece un valor booleano para la propiedad 'cursiva'.

Para los métodos restantes, vaya al siguiente enlace: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html

XSSFHyperlink

Esta es una clase bajo el org.apache.poi.xssf.usermodelpaquete. Implementa la interfaz Hyperlink. Se utiliza para establecer un hipervínculo al contenido de la celda de una hoja de cálculo.

Campos

Los campos de esta clase son los siguientes. Aquí, los campos significan los tipos de hipervínculos utilizados.

No Señor. Campo Descripción
1

LINK_DOCUMENT

Se usa para vincular cualquier otro documento

2

LINK_EMAIL

Se usa para vincular el correo electrónico

3

LINK_FILE

Se utiliza para vincular cualquier otro archivo en cualquier formato

4

LINK_URL

Se usa para vincular una URL web

Métodos de clase

No Señor. Método y descripción
1

setAddress(java.lang.String address)

Dirección de hipervínculo.

Para los métodos restantes, visite el siguiente enlace: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFHyperlink.html

XSSFCreationHelper

Esta es una clase bajo el org.apache.poi.xssf.usermodelpaquete. Implementa la interfaz CreationHelper. Se utiliza como clase de apoyo para la evaluación de fórmulas y la configuración de hipervínculos.

Métodos de clase

No Señor. Método y descripción
1

createFormulaEvaluator()

Crea una instancia XSSFFormulaEvaluator, el objeto que evalúa las celdas de fórmula.

2

createHyperlink(int type)

Crea un nuevo XSSFHyperlink.

Para los métodos restantes, consulte el siguiente enlace: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCreationHelper.html

XSSFPrintSetup

Esta es una clase bajo el org.apache.poi.xsssf.usermodelpaquete. Implementa laPrintSetupinterfaz. Se utiliza para configurar el tamaño, el área, las opciones y la configuración de la página de impresión.

Métodos de clase

No Señor. Método y descripción
1

setLandscape(boolean ls)

Establece un valor booleano para permitir o bloquear la impresión horizontal.

2

setLeftToRight(boolean ltor)

Establece si se realiza el pedido de izquierda a derecha o de arriba hacia abajo durante la impresión.

3

setPaperSize(short size)

Establece el tamaño del papel.

Para los métodos restantes, visite el siguiente enlace: https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPrintSetup.html

Aquí, el término 'Libro de trabajo' significa archivo de Microsoft Excel. Después de completar este capítulo, podrá crear nuevos libros de trabajo y abrir libros de trabajo existentes con su programa Java.

Crear libro de trabajo en blanco

El siguiente programa simple se utiliza para crear un libro de trabajo de Microsoft Excel en blanco.

import java.io.*;
import org.apache.poi.xssf.usermodel.*;

public class CreateWorkBook {
   public static void main(String[] args)throws Exception {
      //Create Blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create file system using specific name
      FileOutputStream out = new FileOutputStream(new File("createworkbook.xlsx"));

      //write operation workbook using file out object 
      workbook.write(out);
      out.close();
      System.out.println("createworkbook.xlsx written successfully");
   }
}

Guardemos el código Java anterior como CreateWorkBook.java, y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac CreateWorkBook.java $java CreateWorkBook

Si el entorno de su sistema está configurado con la biblioteca de puntos de interés, se compilará y ejecutará para generar el archivo de Excel en blanco llamado createworkbook.xlsx en su directorio actual y muestre el siguiente resultado en el símbolo del sistema.

createworkbook.xlsx written successfully

Abrir libro de trabajo existente

Utilice el siguiente código para abrir un libro existente.

import java.io.*;
import org.apache.poi.xssf.usermodel.*;

public class OpenWorkBook {
   public static void main(String args[])throws Exception { 
      File file = new File("openworkbook.xlsx");
      FileInputStream fIP = new FileInputStream(file);
      
      //Get the workbook instance for XLSX file 
      XSSFWorkbook workbook = new XSSFWorkbook(fIP);
      
      if(file.isFile() && file.exists()) {
         System.out.println("openworkbook.xlsx file open successfully.");
      } else {
         System.out.println("Error to open openworkbook.xlsx file.");
      }
   }
}

Guarde el código Java anterior como OpenWorkBook.java, y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac OpenWorkBook.java $java OpenWorkBook

Se compilará y ejecutará para generar la siguiente salida.

openworkbook.xlsx file open successfully.

Después de abrir un libro de trabajo, puede realizar operaciones de lectura y escritura en él.

Este capítulo explica cómo crear una hoja de cálculo y manipularla con Java. La hoja de cálculo es una página en un archivo de Excel; contiene filas y columnas con nombres específicos.

Después de completar este capítulo, podrá crear una hoja de cálculo y realizar operaciones de lectura en ella.

Crea una hoja de cálculo

En primer lugar, creemos una hoja de cálculo utilizando las clases de referencia discutidas en los capítulos anteriores. Siguiendo el capítulo anterior, primero cree un libro de trabajo y luego podemos continuar y crear una hoja.

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");

Filas en la hoja de cálculo

Las hojas de cálculo tienen un diseño de cuadrícula. Las filas y columnas se identifican con nombres específicos. Las columnas se identifican con alfabetos y las filas con números.

El siguiente fragmento de código se utiliza para crear una fila.

XSSFRow row = spreadsheet.createRow((short)1);

Escribir en una hoja de cálculo

Consideremos un ejemplo de datos de empleados. Aquí los datos de los empleados se dan en forma tabular.

ID de emp Nombre emp Designacion
Tp01 Gopal Gerente técnico
TP02 Manisha Lector de pruebas
Tp03 Masthan Escritor técnico
Tp04 Satish Escritor técnico
Tp05 Krishna Escritor técnico

El siguiente código se utiliza para escribir los datos anteriores en una hoja de cálculo.

import java.io.File;
import java.io.FileOutputStream;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Writesheet {
   public static void main(String[] args) throws Exception {

      //Create blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create a blank sheet
      XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");

      //Create row object
      XSSFRow row;

      //This data needs to be written (Object[])
      Map < String, Object[] > empinfo = 
      new TreeMap < String, Object[] >();
      empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
      empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
      empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
      empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
      empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
      empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
      
      //Iterate over data and write to sheet
      Set < String > keyid = empinfo.keySet();
      int rowid = 0;

      for (String key : keyid) {
         row = spreadsheet.createRow(rowid++);
         Object [] objectArr = empinfo.get(key);
         int cellid = 0;

         for (Object obj : objectArr) {
            Cell cell = row.createCell(cellid++);
            cell.setCellValue((String)obj);
         }
      }

      //Write the workbook in file system
      FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("Writesheet.xlsx written successfully");
   }
}

Guarde el código Java anterior como Writesheet.java, y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac Writesheet.java $java Writesheet

Se compilará y ejecutará para generar un archivo de Excel llamado Writesheet.xlsx en su directorio actual y obtendrá el siguiente resultado en el símbolo del sistema.

Writesheet.xlsx written successfully

los Writesheet.xlsx archivo tiene el siguiente aspecto.

Leer de una hoja de cálculo

Consideremos el archivo de Excel anterior llamado Writesheet.xslxcomo entrada. Observe el siguiente código; se utiliza para leer los datos de una hoja de cálculo.

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.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Readsheet {
   static XSSFRow row;
   public static void main(String[] args) throws Exception {
      FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));
      
      XSSFWorkbook workbook = new XSSFWorkbook(fis);
      XSSFSheet spreadsheet = workbook.getSheetAt(0);
      Iterator < Row >  rowIterator = spreadsheet.iterator();
      
      while (rowIterator.hasNext()) {
         row = (XSSFRow) rowIterator.next();
         Iterator < Cell >  cellIterator = row.cellIterator();
         
         while ( cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            
            switch (cell.getCellType()) {
               case Cell.CELL_TYPE_NUMERIC:
                  System.out.print(cell.getNumericCellValue() + " \t\t ");
                  break;
               
               case Cell.CELL_TYPE_STRING:
                  System.out.print(
                  cell.getStringCellValue() + " \t\t ");
                  break;
            }
         }
         System.out.println();
      }
      fis.close();
   }
}

Mantengamos el código anterior en Readsheet.java y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera:

$javac Readsheet.java $java Readsheet

Si el entorno de su sistema está configurado con la biblioteca de puntos de interés, se compilará y ejecutará para generar la siguiente salida en el símbolo del sistema.

EMP ID   EMP NAME       DESIGNATION 
 tp01     Gopal       Technical Manager 
 tp02     Manisha     Proof Reader 
 tp03     Masthan     Technical Writer 
 tp04     Satish      Technical Writer 
 tp05     Krishna     Technical Writer

Cualquier dato que ingrese en una hoja de cálculo siempre se almacena en una celda. Usamos las etiquetas de filas y columnas para identificar una celda. Este capítulo describe cómo manipular datos en celdas en una hoja de cálculo usando programación Java.

Crear una celda

Necesita crear una fila antes de crear una celda. Una fila no es más que una colección de celdas.

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

El siguiente código se usa para crear diferentes tipos de celdas en una hoja de cálculo.

import java.io.File;
import java.io.FileOutputStream;

import java.util.Date;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TypesofCells {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("cell types");
      
      XSSFRow row = spreadsheet.createRow((short) 2);
      row.createCell(0).setCellValue("Type of Cell");
      row.createCell(1).setCellValue("cell value");
      
      row = spreadsheet.createRow((short) 3);
      row.createCell(0).setCellValue("set cell type BLANK");
      row.createCell(1);
      
      row = spreadsheet.createRow((short) 4);
      row.createCell(0).setCellValue("set cell type BOOLEAN");
      row.createCell(1).setCellValue(true);
      
      row = spreadsheet.createRow((short) 5);
      row.createCell(0).setCellValue("set cell type ERROR");
      row.createCell(1).setCellValue(XSSFCell.CELL_TYPE_ERROR );
      
      row = spreadsheet.createRow((short) 6);
      row.createCell(0).setCellValue("set cell type date");
      row.createCell(1).setCellValue(new Date());
      
      row = spreadsheet.createRow((short) 7);
      row.createCell(0).setCellValue("set cell type numeric");
      row.createCell(1).setCellValue(20 );
      
      row = spreadsheet.createRow((short) 8);
      row.createCell(0).setCellValue("set cell type string");
      row.createCell(1).setCellValue("A String");
      
      FileOutputStream out = new FileOutputStream(new File("typesofcells.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("typesofcells.xlsx written successfully");
   }
}

Guarde el código anterior en un archivo llamado TypesofCells.java, compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera.

$javac TypesofCells.java $java TypesofCells

Si su sistema está configurado con la biblioteca de puntos de interés, se compilará y ejecutará para generar un archivo de Excel llamado typesofcells.xlsx en su directorio actual y muestre la siguiente salida.

typesofcells.xlsx written successfully

los typesofcells.xlsx archivo tiene el siguiente aspecto.

Estilos de celda

Aquí puede aprender cómo dar formato a las celdas y aplicar diferentes estilos, como fusionar celdas adyacentes, agregar bordes, configurar la alineación de celdas y rellenar con colores.

El siguiente código se usa para aplicar diferentes estilos a las celdas usando la programación Java.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CellStyle {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("cellstyle");
      XSSFRow row = spreadsheet.createRow((short) 1);
      row.setHeight((short) 800);
      XSSFCell cell = (XSSFCell) row.createCell((short) 1);
      cell.setCellValue("test of merging");

      //MEARGING CELLS 
      //this statement for merging cells

      spreadsheet.addMergedRegion(
         new CellRangeAddress(
            1, //first row (0-based)
            1, //last row (0-based)
            1, //first column (0-based)
            4 //last column (0-based)
         )
      );
      
      //CELL Alignment
      row = spreadsheet.createRow(5); 
      cell = (XSSFCell) row.createCell(0);
      row.setHeight((short) 800);
      
      // Top Left alignment 
      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);
      row = spreadsheet.createRow(6); 
      cell = (XSSFCell) row.createCell(1);
      row.setHeight((short) 800);
      
      // Center Align Cell Contents 
      XSSFCellStyle style2 = workbook.createCellStyle();
      style2.setAlignment(XSSFCellStyle.ALIGN_CENTER);
      style2.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
      cell.setCellValue("Center Aligned"); 
      cell.setCellStyle(style2);
      row = spreadsheet.createRow(7); 
      cell = (XSSFCell) row.createCell(2);
      row.setHeight((short) 800);
      
      // Bottom Right alignment 
      XSSFCellStyle style3 = workbook.createCellStyle();
      style3.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
      style3.setVerticalAlignment(XSSFCellStyle.VERTICAL_BOTTOM);
      cell.setCellValue("Bottom Right");
      cell.setCellStyle(style3);
      row = spreadsheet.createRow(8);
      cell = (XSSFCell) row.createCell(3);
      
      // Justified Alignment 
      XSSFCellStyle style4 = workbook.createCellStyle();
      style4.setAlignment(XSSFCellStyle.ALIGN_JUSTIFY);
      style4.setVerticalAlignment(XSSFCellStyle.VERTICAL_JUSTIFY);
      cell.setCellValue("Contents are Justified in Alignment"); 
      cell.setCellStyle(style4);
      
      //CELL BORDER
      row = spreadsheet.createRow((short) 10);
      row.setHeight((short) 800);
      cell = (XSSFCell) row.createCell((short) 1);
      cell.setCellValue("BORDER");
      
      XSSFCellStyle style5 = workbook.createCellStyle();
      style5.setBorderBottom(XSSFCellStyle.BORDER_THICK);
      style5.setBottomBorderColor(IndexedColors.BLUE.getIndex());
      style5.setBorderLeft(XSSFCellStyle.BORDER_DOUBLE);
      style5.setLeftBorderColor(IndexedColors.GREEN.getIndex());
      style5.setBorderRight(XSSFCellStyle.BORDER_HAIR);
      style5.setRightBorderColor(IndexedColors.RED.getIndex());
      style5.setBorderTop(XSSFCellStyle.BIG_SPOTS);
      style5.setTopBorderColor(IndexedColors.CORAL.getIndex());
      cell.setCellStyle(style5);
      
      //Fill Colors
      //background color
      row = spreadsheet.createRow((short) 10 );
      cell = (XSSFCell) row.createCell((short) 1);
      
      XSSFCellStyle style6 = workbook.createCellStyle();
      style6.setFillBackgroundColor(HSSFColor.LEMON_CHIFFON.index );
      style6.setFillPattern(XSSFCellStyle.LESS_DOTS);
      style6.setAlignment(XSSFCellStyle.ALIGN_FILL);
      spreadsheet.setColumnWidth(1,8000);
      cell.setCellValue("FILL BACKGROUNG/FILL PATTERN");
      cell.setCellStyle(style6);
      
      //Foreground color
      row = spreadsheet.createRow((short) 12);
      cell = (XSSFCell) row.createCell((short) 1);
      
      XSSFCellStyle style7 = workbook.createCellStyle();
      style7.setFillForegroundColor(HSSFColor.BLUE.index);
      style7.setFillPattern( XSSFCellStyle.LESS_DOTS);
      style7.setAlignment(XSSFCellStyle.ALIGN_FILL);
      cell.setCellValue("FILL FOREGROUND/FILL PATTERN");
      cell.setCellStyle(style7);

      FileOutputStream out = new FileOutputStream(new File("cellstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("cellstyle.xlsx written successfully");
   }
}

Guarde el código anterior en un archivo llamado CellStyle.java, compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera.

$javac CellStyle.java $java CellStyle

Generará un archivo de Excel llamado cellstyle.xlsx en su directorio actual y muestre la siguiente salida.

cellstyle.xlsx written successfully

El archivo cellstyle.xlsx tiene el siguiente aspecto.

Este capítulo explica cómo configurar diferentes fuentes, aplicar estilos y mostrar texto en diferentes ángulos de dirección en una hoja de cálculo de Excel.

Cada sistema viene con una gran colección de fuentes como Arial, Impact, Times New Roman, etc. La colección también se puede actualizar con nuevas fuentes, si es necesario. Del mismo modo, existen varios estilos en los que se puede mostrar una fuente, por ejemplo, negrita, cursiva, subrayado, tachado, etc.

Fuentes y estilos de fuente

El siguiente código se utiliza para aplicar una fuente y un estilo en particular al contenido de una celda.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class FontStyle {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Fontstyle");
      XSSFRow row = spreadsheet.createRow(2);

      //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);

      // Create a cell with a value and set style to it.
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("Font Style");
      cell.setCellStyle(style);
      
      FileOutputStream out = new FileOutputStream(new File("fontstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fontstyle.xlsx written successfully");
   }
}

Guardemos el código anterior en un archivo llamado FontStyle.java. Compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera.

$javac FontStyle.java $java FontStyle

Genera un archivo de Excel llamado fontstyle.xlsx en su directorio actual y muestre el siguiente resultado en el símbolo del sistema.

fontstyle.xlsx written successfully

los fontstyle.xlsx archivo tiene el siguiente aspecto.

Dirección del texto

Aquí puede aprender a configurar la dirección del texto en diferentes ángulos. Por lo general, el contenido de la celda se muestra horizontalmente, de izquierda a derecha y en un ángulo de 00; sin embargo, puede utilizar el siguiente código para rotar la dirección del texto, si es necesario.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TextDirection {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Text direction");
      XSSFRow row = spreadsheet.createRow(2);
      XSSFCellStyle myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 0);
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("0D angle");
      cell.setCellStyle(myStyle);

      //30 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 30);
      cell = row.createCell(3);
      cell.setCellValue("30D angle");
      cell.setCellStyle(myStyle);

      //90 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 90);
      cell = row.createCell(5);
      cell.setCellValue("90D angle");
      cell.setCellStyle(myStyle);

      //120 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 120);
      cell = row.createCell(7);
      cell.setCellValue("120D angle");
      cell.setCellStyle(myStyle);

      //270 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 270);
      cell = row.createCell(9);
      cell.setCellValue("270D angle");
      cell.setCellStyle(myStyle);

      //360 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 360);
      cell = row.createCell(12);
      cell.setCellValue("360D angle");
      cell.setCellStyle(myStyle);
      
      FileOutputStream out = new FileOutputStream(new File("textdirection.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("textdirection.xlsx written successfully");
   }
}

Mantenga el código anterior en TextDirectin.java , compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera.

$javac TextDirection.java $java TextDirection

Se compilará y ejecutará para generar un archivo de Excel llamado textdirection.xlsx en su directorio actual y muestre el siguiente resultado en el símbolo del sistema.

textdirection.xlsx written successfully

los textdirection.xlsx archivo tiene el siguiente aspecto.

Este capítulo lo lleva a través del proceso de aplicación de diferentes fórmulas en celdas usando programación Java. El propósito básico de la aplicación Excel es mantener los datos numéricos mediante la aplicación de fórmulas.

En una fórmula, pasamos valores dinámicos o ubicaciones de los valores en la hoja de Excel. Al ejecutar esta fórmula, obtiene el resultado deseado. La siguiente tabla enumera algunas fórmulas básicas que se utilizan con frecuencia en Excel.

Operación Sintaxis
Sumar varios números = SUMA (Loc1: Locn) or = SUMA (n1, n2,)
Contar = CONTAR (Loc1: Locn) or = CONTAR (n1, n2,)
Poder de dos números = POTENCIA (Loc1, Loc2) or = POTENCIA (número, potencia)
Máximo de varios números = MAX (Loc1: Locn) or = MAX (n1, n2,)
Producto = PRODUCTO (Loc1: Locn) or = PRODUCTO (n1, n2,)
Factorial = HECHO (Locn) or = HECHO (número)
Número absoluto = ABS (Locn) or = ABS (número)
Fecha de hoy = HOY ()
Convierte minúsculas = INFERIOR (Locn) or = INFERIOR (texto)
Raíz cuadrada = SQRT (locn) or = SQRT (número)

El siguiente código se usa para agregar fórmulas a una celda y ejecutarla.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Formula {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("formula");
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell = row.createCell(1);
      
      cell.setCellValue("A = ");
      cell = row.createCell(2);
      cell.setCellValue(2);
      row = spreadsheet.createRow(2);
      cell = row.createCell(1);
      cell.setCellValue("B = ");
      cell = row.createCell(2);
      cell.setCellValue(4);
      row = spreadsheet.createRow(3);
      cell = row.createCell(1);
      cell.setCellValue("Total = ");
      cell = row.createCell(2);
      
      // Create SUM formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SUM(C2:C3)");
      cell = row.createCell(3);
      cell.setCellValue("SUM(C2:C3)");
      row = spreadsheet.createRow(4);
      cell = row.createCell(1);
      cell.setCellValue("POWER =");
      cell=row.createCell(2);
      
      // Create POWER formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("POWER(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("POWER(C2,C3)");
      row = spreadsheet.createRow(5);
      cell = row.createCell(1);
      cell.setCellValue("MAX = ");
      cell = row.createCell(2);
      
      // Create MAX formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("MAX(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("MAX(C2,C3)");
      row = spreadsheet.createRow(6);
      cell = row.createCell(1);
      cell.setCellValue("FACT = ");
      cell = row.createCell(2);
      
      // Create FACT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("FACT(C3)");
      cell = row.createCell(3);
      cell.setCellValue("FACT(C3)");
      row = spreadsheet.createRow(7);
      cell = row.createCell(1);
      cell.setCellValue("SQRT = ");
      cell = row.createCell(2);
      
      // Create SQRT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SQRT(C5)");
      cell = row.createCell(3);
      cell.setCellValue("SQRT(C5)");
      workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
      FileOutputStream out = new FileOutputStream(new File("formula.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fromula.xlsx written successfully");
   }
}

Guarde el código anterior como Formula.java y luego compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera.

$javac Formula.java $java Formula

Generará un archivo de Excel llamado formula.xlsx en su directorio actual y muestre el siguiente resultado en el símbolo del sistema.

fromula.xlsx written successfully

los formula.xlsx archivo tiene el siguiente aspecto.

Este capítulo explica cómo agregar hipervínculos al contenido de una celda. Por lo general, los hipervínculos se utilizan para acceder a cualquier URL web, correo electrónico o un archivo externo.

El siguiente código muestra cómo crear hipervínculos en celdas.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.common.usermodel.Hyperlink;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class HyperlinkEX {
   public static void main(String[] args) throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Hyperlinks");
      XSSFCell cell;
      CreationHelper createHelper = workbook.getCreationHelper();
      XSSFCellStyle hlinkstyle = workbook.createCellStyle();
      XSSFFont hlinkfont = workbook.createFont();
      hlinkfont.setUnderline(XSSFFont.U_SINGLE);
      hlinkfont.setColor(HSSFColor.BLUE.index);
      hlinkstyle.setFont(hlinkfont);

      //URL Link
      cell = spreadsheet.createRow(1).createCell((short) 1);
      cell.setCellValue("URL Link");
      XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
      link.setAddress("http://www.tutorialspoint.com/");
      cell.setHyperlink((XSSFHyperlink) link);
      cell.setCellStyle(hlinkstyle);

      //Hyperlink to a file in the current directory
      cell = spreadsheet.createRow(2).createCell((short) 1);
      cell.setCellValue("File Link");
      link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_FILE);
      link.setAddress("cellstyle.xlsx");
      cell.setHyperlink(link);
      cell.setCellStyle(hlinkstyle);

      //e-mail link
      cell = spreadsheet.createRow(3).createCell((short) 1);
      cell.setCellValue("Email Link");
      link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
      link.setAddress("mailto:[email protected]?" + "subject = Hyperlink");
      cell.setHyperlink(link);
      cell.setCellStyle(hlinkstyle);
      
      FileOutputStream out = new FileOutputStream(new File("hyperlink.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("hyperlink.xlsx written successfully");
   }
}

Guarde el código anterior como HyperlinkEX.java. Compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera.

$javac HyperlinkEX.java $java HyperlinkEX

Generará un archivo de Excel llamado hyperlink.xlsx en su directorio actual y muestre el siguiente resultado en el símbolo del sistema.

hyperlink.xlsx written successfully

los hyperlink.xlsx archivo tiene el siguiente aspecto.

Este capítulo explica cómo configurar el área de impresión en una hoja de cálculo. El área de impresión habitual es de izquierda a derecha en las hojas de cálculo de Excel. El área de impresión se puede personalizar según sus necesidades. Significa que puede imprimir un rango particular de celdas de toda la hoja de cálculo, personalizar el tamaño del papel, imprimir el contenido con las líneas de cuadrícula activadas, etc.

El siguiente código se utiliza para configurar el área de impresión en una hoja de cálculo.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class PrintArea {
   public static void main(String[] args)throws Exception {
      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);
      
      FileOutputStream out = new FileOutputStream(new File("printarea.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("printarea.xlsx written successfully"); 
   }
}

Guardemos el código anterior como PrintArea.java. Compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera.

$javac PrintArea.java $java PrintArea

Generará un archivo llamado printarea.xlsx en su directorio actual y muestre el siguiente resultado en el símbolo del sistema.

printarea.xlsx written successfully

En el código anterior, no hemos agregado ningún valor de celda. Por lo tantoprintarea.xlsxes un archivo en blanco. Pero puede observar en la siguiente figura que la vista previa de impresión muestra el área de impresión con líneas de cuadrícula.

Este capítulo explica cómo interactúa la biblioteca de puntos de interés con una base de datos. Con la ayuda de JDBC, puede recuperar datos de una base de datos e insertar esos datos en una hoja de cálculo utilizando la biblioteca de puntos de interés. Consideremos la base de datos MySQL para operaciones SQL.

Escribir en Excel desde la base de datos

Asumamos la siguiente tabla de datos de empleados llamada emp_tbl se recuperará de la base de datos MySQL test.

ID de EMP NOMBRE EMP DEG SALARIO DEPT
1201 Gopal Gerente técnico 45000 ESO
1202 Manisha Lector de pruebas 45000 Pruebas
1203 Masthanvali Escritor técnico 45000 ESO
1204 Kiran Administrador de recursos humanos 40000 HORA
1205 Kranthi Administrador de operaciones 30000 Administración

Use el siguiente código para recuperar datos de una base de datos e insértelos en una hoja de cálculo.

import java.io.File;
import java.io.FileOutputStream;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelDatabase {
   public static void main(String[] args) throws Exception {
      Class.forName("com.mysql.jdbc.Driver");
      Connection connect = DriverManager.getConnection( 
         "jdbc:mysql://localhost:3306/test" , 
         "root" , 
         "root"
      );
      
      Statement statement = connect.createStatement();
      ResultSet resultSet = statement.executeQuery("select * from emp_tbl");
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("employe db");
      
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell;
      cell = row.createCell(1);
      cell.setCellValue("EMP ID");
      cell = row.createCell(2);
      cell.setCellValue("EMP NAME");
      cell = row.createCell(3);
      cell.setCellValue("DEG");
      cell = row.createCell(4);
      cell.setCellValue("SALARY");
      cell = row.createCell(5);
      cell.setCellValue("DEPT");
      int i = 2;

      while(resultSet.next()) {
         row = spreadsheet.createRow(i);
         cell = row.createCell(1);
         cell.setCellValue(resultSet.getInt("eid"));
         cell = row.createCell(2);
         cell.setCellValue(resultSet.getString("ename"));
         cell = row.createCell(3);
         cell.setCellValue(resultSet.getString("deg"));
         cell = row.createCell(4);
         cell.setCellValue(resultSet.getString("salary"));
         cell = row.createCell(5);
         cell.setCellValue(resultSet.getString("dept"));
         i++;
      }

      FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("exceldatabase.xlsx written successfully");
   }
}

Guardemos el código anterior como ExcelDatabase.java. Compílelo y ejecútelo desde el símbolo del sistema de la siguiente manera.

$javac ExcelDatabase.java $java ExcelDatabase

Generará un archivo de Excel llamado exceldatabase.xlsx en su directorio actual y muestre el siguiente resultado en el símbolo del sistema.

exceldatabase.xlsx written successfully

los exceldatabase.xlsx archivo tiene el siguiente aspecto.