Cómo crear un archivo de Excel en C#

Cómo añadir un panel de congelación en Excel con C#

This article was translated from English: Does it need improvement?
Translated
View the article in English

En las grandes hojas de cálculo de Excel con más de 50 filas o columnas más allá de la 'Z', la visualización de los datos sin perder de vista los encabezados se convierte en todo un reto. La funcionalidad Freeze Pane en C# ofrece una solución elegante al bloquear filas y columnas específicas en su lugar mientras permite que el resto se desplace libremente.

Esta función resulta esencial cuando se trabaja con informes financieros, bases de datos de empleados o listas de inventario en las que se necesita una visibilidad constante de los encabezados de columna o los identificadores de fila. Con la biblioteca de Excel de IronXL, puede añadir mediante programación paneles de congelación para mejorar la navegación de datos y la experiencia del usuario en sus aplicaciones .NET.

como-título:2(Inicio rápido: Bloquear filas y columnas de encabezado en una línea)

Utilice el sencillo método CreateFreezePane(colSplit, rowSplit) para congelar filas o columnas en segundos. Sin configuraciones complejas: basta con cargar la hoja, llamar a este método y los encabezados permanecerán bloqueados en la parte superior mientras se desplaza.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronXL con el gestor de paquetes NuGet

    PM > Install-Package IronXL.Excel

  2. Copie y ejecute este fragmento de código.

    workSheet.CreateFreezePane(1, 4);
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronXL en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer


¿Cómo añadir un panel de congelación en Excel?

Los paneles de congelación bloquean las filas y columnas en su lugar, lo que permite que permanezcan visibles mientras se desplaza. Esta función mantiene las columnas o filas de encabezado en su sitio mientras se compara rápidamente la información. Esta funcionalidad es especialmente valiosa cuando se trabaja con grandes conjuntos de datos o cuando se necesita mantener el contexto mientras se navega por extensas hojas de cálculo.

La función de panel de congelación de IronXL imita la funcionalidad nativa de Excel, por lo que resulta intuitiva para los desarrolladores familiarizados con la interfaz de Excel. A diferencia de las soluciones Excel Interop, IronXL ofrece un enfoque más eficiente y fácil de usar para implementar paneles de congelación mediante programación.

¿Cómo funciona CreateFreezePane con 2 parámetros?

Para añadir un panel congelado, use el método CreateFreezePane, especificando la columna y fila desde las cuales el panel congelado debe comenzar. La columna y fila especificadas no se incluyen en el panel congelado. Por ejemplo, workSheet.CreateFreezePane(1, 4) crea un panel de congelación a partir de la columna A y las filas 1 a 4.

Comprender la indexación basada en ceros es crucial: la columna 0 se refiere a la columna A, la columna 1 a la B, y así sucesivamente. La indexación por filas sigue el mismo patrón. Este método es perfecto para situaciones en las que desea mantener visibles los encabezados mientras se desplaza por las entradas de datos.

El siguiente ejemplo de código demuestra cómo crear un panel congelado comenzando desde la columna B y fila 4:

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-add.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Create freeze pane from column(A-B) and row(1-3)
workSheet.CreateFreezePane(2, 3);

workBook.SaveAs("createFreezePanes.xlsx");
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.WorkSheets.First()

' Create freeze pane from column(A-B) and row(1-3)
workSheet.CreateFreezePane(2, 3)

workBook.SaveAs("createFreezePanes.xlsx")
$vbLabelText   $csharpLabel

¿Cómo se ve Freeze Pane en acción?

Freeze Pane in Action

¿Cómo eliminar el panel de congelación?

Utilice el método RemovePane para eliminar todos los paneles de congelación existentes de su hoja de cálculo. Esto resulta útil cuando es necesario restablecer la vista o aplicar diferentes ajustes de congelación en función de las preferencias del usuario o de cambios en los datos.

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-remove.cs
// Remove all existing freeze or split pane
workSheet.RemovePane();
' Remove all existing freeze or split pane
workSheet.RemovePane()
$vbLabelText   $csharpLabel

¿Cuáles son las opciones avanzadas del panel de congelación?

El método CreateFreezePane ofrece una opción avanzada para crear paneles congelados con funcionalidad de desplazamiento previo. Esta función es útil cuando se desea centrar la atención en un área específica de la hoja de cálculo, manteniendo al mismo tiempo la funcionalidad del panel de congelación.

¿Cuándo debo utilizar 4 parámetros para paneles de congelación avanzados?

Este método le permite añadir un panel congelado basado en la columna y fila de inicio especificadas. Además, le permite aplicar desplazamiento a la hoja de trabajo. Esto es especialmente beneficioso cuando se trabaja con informes de Excel con formato en los que se necesita un control preciso sobre la vista inicial.

Por ejemplo, al utilizar workSheet.CreateFreezePane(5, 2, 6, 7) se crea un panel de congelación que abarca las columnas A-E y las filas 1-2. Incluye un desplazamiento de 1 columna y 5 filas. Cuando se abre la hoja de cálculo, se muestran las columnas A-E, G-... y las filas 1-2, 8-....

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-advance.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Overwriting freeze or split pane to column(A-E) and row(1-5) as well as applying prescroll
// The column will show E,G,... and the row will show 5,8,...
workSheet.CreateFreezePane(5, 5, 6, 7);

workBook.SaveAs("createFreezePanes.xlsx");
Imports IronXL
Imports System.Linq

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.WorkSheets.First()

' Overwriting freeze or split pane to column(A-E) and row(1-5) as well as applying prescroll
' The column will show E,G,... and the row will show 5,8,...
workSheet.CreateFreezePane(5, 5, 6, 7)

workBook.SaveAs("createFreezePanes.xlsx")
$vbLabelText   $csharpLabel

¿Qué aspecto tiene el panel de congelación avanzado?

Demostración de paneles de congelación de Excel mostrando datos de empleados con cabeceras congeladas y columna ID, la flecha azul indica el límite de congelación

Casos prácticos de uso de los paneles de congelación

Los paneles de congelación tienen un valor incalculable en diversos escenarios empresariales:

  1. Informes financieros: mantener visibles los encabezados de los meses/trimestres mientras se desplaza por los datos anuales
  2. Bases de datos de empleados: Bloquee los nombres e ID de los empleados mientras visualiza las métricas de rendimiento
  3. Gestión de inventario: Fijar códigos y nombres de productos mientras se revisan los niveles de existencias
  4. Dashboards de ventas: Mantenga la visibilidad de las categorías de productos mientras analiza los datos de ventas regionales

Cuando se combinan con fórmulas Excel, los paneles de congelación mejoran significativamente la eficiencia del análisis de datos.

Ejemplo completo: Creación de un informe de datos con paneles de congelación

He aquí un ejemplo exhaustivo que muestra cómo crear un informe formateado con paneles de congelación:

using IronXL;
using IronXL.Styles;

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Report");

// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Q1 Sales";
workSheet["D1"].Value = "Q2 Sales";
workSheet["E1"].Value = "Q3 Sales";
workSheet["F1"].Value = "Q4 Sales";
workSheet["G1"].Value = "Total";

// Style headers
var headerRange = workSheet["A1:G1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";

// Add sample data
for (int i = 2; i <= 50; i++)
{
    workSheet[$"A{i}"].Value = $"P{i-1:D3}";
    workSheet[$"B{i}"].Value = $"Product {i-1}";
    workSheet[$"C{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"D{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"E{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"F{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"G{i}"].Formula = $"=SUM(C{i}:F{i})";
}

// Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1);

// Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6);

// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
using IronXL;
using IronXL.Styles;

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Report");

// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Q1 Sales";
workSheet["D1"].Value = "Q2 Sales";
workSheet["E1"].Value = "Q3 Sales";
workSheet["F1"].Value = "Q4 Sales";
workSheet["G1"].Value = "Total";

// Style headers
var headerRange = workSheet["A1:G1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";

// Add sample data
for (int i = 2; i <= 50; i++)
{
    workSheet[$"A{i}"].Value = $"P{i-1:D3}";
    workSheet[$"B{i}"].Value = $"Product {i-1}";
    workSheet[$"C{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"D{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"E{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"F{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"G{i}"].Formula = $"=SUM(C{i}:F{i})";
}

// Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1);

// Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6);

// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Este ejemplo muestra cómo funcionan los paneles de congelación con estilos de celda y fórmulas para crear informes profesionales. La fila de cabecera permanece visible mientras los usuarios se desplazan por las 50 filas de datos de ventas.

Consideraciones sobre el rendimiento

Al implementar paneles de congelación en grandes hojas de cálculo:

  • Aplicar paneles de congelación después de rellenar los datos para un rendimiento óptimo
  • Considere la posibilidad de utilizar formateo condicional para resaltar datos importantes en secciones congeladas
  • Pruebe con el volumen de datos deseado para garantizar un desplazamiento fluido

Para las aplicaciones que manejan grandes conjuntos de datos, explore la exportación a diferentes formatos o la implementación de estrategias de paginación junto con paneles de congelación.

Por favor notaSólo se puede aplicar una configuración de panel de congelación. Cualquier creación adicional de panel congelado sobrescribirá al anterior. El panel de congelación no funciona con las versiones 97-2003 (.xls) de Microsoft Excel.

Preguntas Frecuentes

¿Qué es el panel de congelación y por qué es útil en las hojas de cálculo de Excel?

La función de congelar panel bloquea filas y columnas específicas en su lugar, manteniéndolas visibles mientras se desplaza por grandes hojas de cálculo. Esto resulta especialmente útil para mantener la visibilidad de encabezados en informes financieros, bases de datos de empleados o listas de inventario. IronXL proporciona un sencillo método CreateFreezePane para implementar esta funcionalidad mediante programación en aplicaciones C#.

¿Cómo puedo añadir rápidamente paneles de congelación para bloquear filas de encabezado en C#?

Con IronXL, puede bloquear filas de encabezado en solo una línea de código utilizando el método CreateFreezePane. Simplemente llame a workSheet.CreateFreezePane(1, 4) para congelar columnas y filas. Esto bloquea la columna A y las filas 1-4 en su lugar mientras permite que el resto de la hoja de cálculo se desplace libremente.

¿Cuál es la diferencia entre utilizar 2 parámetros y 4 parámetros con CreateFreezePane?

El método CreateFreezePane de IronXL ofrece dos opciones: utilizando 2 parámetros (colSplit, rowSplit) crea un panel de congelación básico desde la posición especificada, mientras que el uso de 4 parámetros le permite agregar paneles de congelación con posicionamiento predesplazado para un control más avanzado sobre el área de visualización.

¿Cómo funciona la indexación basada en cero al fijar paneles de congelación?

En el método CreateFreezePane de IronXL, la indexación está basada en cero. La columna 0 se refiere a la columna A, la columna 1 a la columna B, y así sucesivamente. Del mismo modo, la indexación de filas comienza en 0. Por ejemplo, CreateFreezePane(1, 4) crea un panel de congelación a partir de la columna A e incluye las filas 1 a 4.

¿Por qué debería utilizar esta biblioteca en lugar de Excel Interop para los paneles de congelación?

IronXL ofrece un enfoque más eficiente y fácil de usar en comparación con las soluciones Excel Interop. No requiere que Excel esté instalado en el servidor, ofrece un mejor rendimiento para grandes conjuntos de datos y proporciona una API intuitiva que imita la funcionalidad nativa de Excel a la vez que está optimizada para aplicaciones .NET.

¿Puedo exportar hojas de cálculo con paneles congelados a distintos formatos de archivo?

Sí, después de agregar paneles de congelación utilizando el método CreateFreezePane de IronXL, puede exportar su hoja de cálculo a varios formatos de archivo mientras mantiene la funcionalidad del panel de congelación. La biblioteca conserva esta configuración al guardar en formatos de Excel compatibles.

Chaknith Bin
Ingeniero de Software
Chaknith trabaja en IronXL e IronBarcode. Tiene un profundo conocimiento en C# y .NET, ayudando a mejorar el software y apoyar a los clientes. Sus conocimientos derivados de las interacciones con los usuarios contribuyen a mejores productos, documentación y experiencia en general.
¿Listo para empezar?
Nuget Descargas 1,765,830 | Versión: 2025.12 recién lanzado