officeopenxml - excelpackage c#
CongelaciĆ³n de columnas en EPPlus(una funciĆ³n dividida de Excel) (2)
Me di cuenta de que al usar la sugerencia de @ IronMan84, si solo está interesado en la fila, pero no en la columna. Puedes usar
ws.View.FreezePanes(3, 1); // (Freeze Row 2 and no column)
He estado trabajando mucho con EPPlus para generar archivos de Excel para la cantidad de exportaciones que mi proyecto requiere que haga. La mayoría de las exportaciones que desean tienden a coincidir perfectamente con las exportaciones que ya tienen en su sistema heredado. Uno de ellos, sin embargo, quieren diferente. Quieren que se vea exactamente como una de las exportaciones del sistema heredado después de que hayan hecho algunas ediciones típicas y específicas .
Sin embargo, algunas de las ediciones que hacen hacen que cada fila sea mucho más larga de lo que quisieran, por lo que quieren mantener parte de la información de la columna bloqueada en su lugar en la pantalla mientras que el resto de las columnas se pueden desplazar de forma normal (es decir, la función de división de Excel). Intenté bloquear las columnas con ws.Column(6).Style.Locked = true
, pero parece que no funciona. También intenté establecer la propiedad Locked
un rango de celda en verdadera, pero eso tampoco funcionó.
¿Cómo puedo congelar las columnas en su lugar?
Resulta que EPPlus tiene una función incorporada para hacer eso en el propio objeto de FreezePanes
Worksheet
llamado FreezePanes
. Esta función tiene 2 parámetros, los cuales son int
: Fila y Columna. Al hacerlo, congelará las filas o columnas que desee que estén bloqueadas mientras visualiza la hoja de trabajo.
Uno de los ejemplos en el sitio web EPPlus lo usa, aunque no es el enfoque principal del ejemplo / Ese ejemplo se puede encontrar aquí .
Sin embargo, hay una gotcha con esta función que debe conocer: el número que usa para el parámetro de fila o columna es en realidad la primera columna que NO está congelada en su lugar . En otras palabras, si desea que se congelen las primeras 5 columnas, deberá realizar la siguiente llamada:
ws.View.FreezePanes(1,6)
(Donde 6 es la primera columna que no está congelada)