tutorial poi para ooxml libreria example descargar java apache-poi

java - poi - Filas de encabezado de bloqueo de puntos de interés de Apache



java apache poi documentation (3)

No se puede congelar una fila del medio sin obtener las filas de arriba que también se congelaron.

Supongamos que tiene 100 filas y su fila de encabezado está en la línea 50. Puede esperar que solo la fila 50 se bloquee, de modo que cuando se desplace de la línea 1-49, todo se desplaza hacia arriba y cuando llega a la línea 50, la fila 50 se desplaza al arriba y permanece allí cuando se desplazan las líneas 51-100.

Pero, hay una solución. Lo que puedes hacer es agrupar las filas y luego congelarlas.

Primero, agrupe las filas de 1-49 y luego congele los paneles de 1-50. Ahora el usuario puede minimizar el grupo y luego trabajar con la tabla con el encabezado de tabla bloqueado y en la parte superior.

sheet.groupRow(0, 49); sheet.createFreezePane(0, 50);

Sin embargo, hay una pequeña captura. MS Excel no le permitirá expandir / colapsar un grupo si la hoja está protegida. Para esto necesitas escribir una Macro.

¿Alguien está familiarizado con la forma de bloquear una fila en una hoja de cálculo creada con Apache POI 3.7? Al bloquear quiero decir que quiero que la fila del título para las columnas permanezca visible cuando el usuario se desplaza por las filas. Mi hoja de cálculo creada tendrá 500 filas y sería beneficioso que los nombres de las columnas siempre estuvieran visibles.


Para hacer esto, puede crear un panel de congelación de la siguiente manera:

workbook.getSheetAt(workbook.getActiveSheetIndex()).createFreezePane(0, 1);

Esto congelará la primera fila en su lugar. Hay otro método con más opciones, así que echa un vistazo a la API .

Lo único que se debe tener en cuenta es que si está utilizando libros de trabajo XSSF, hay una mención de una corrección de errores en la versión 3.8-beta3 que corrigió el comportamiento de los paneles congelados utilizando hojas de cálculo XSSF:

50884: los paneles de congelación XSSF y HSSF ahora se comportan igual (poi-developers)

No sé los detalles de esto, pero valdría la pena investigar si estás en ese barco.


En caso de que necesite congelar cualquier fila en particular en cualquier lugar de la hoja, puede usar (Dentro de org.apache.poi.ss.usermodel.Sheet ) (Disponible también en POI 3.7)

Sheet.createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow)

En su caso, si desea congelar solo sus primeras x filas int leftmostColumn, int topRow sección int leftmostColumn, int topRow y podrá usar solo

Sheet.createFreezePane(int colSplit, int rowSplit)

por ejemplo

sheet1.createFreezePane(0, 5); // this will freeze first five rows