Validación de datos en Excel usando C#

La validación de datos en Excel asegura que los usuarios ingresen solo datos válidos en las hojas de cálculo. Al diseñar formularios, recopilar datos o construir modelos financieros, las validaciones de datos ayudan a mantener la estructura y minimizar los errores del usuario. En esta publicación, te mostraremos cómo aplicar la validación de datos en Excel utilizando C# de forma programática.

Este artículo cubre los siguientes temas:

Biblioteca de Validación de Datos de Excel en C#

La validación de datos garantiza que los usuarios ingresen datos válidos y esperados en hojas de cálculo de Excel. Usaremos la Aspose.Cells for .NET API para agregar diferentes tipos de validación de datos en Excel. Proporciona un enfoque poderoso y flexible para definir reglas tales como listas desplegables, rangos numéricos, límites de fechas y fórmulas personalizadas, todo sin requerir Microsoft Excel.

Instala el paquete Aspose.Cells for .NET a través de NuGet en tu proyecto:

PM> Install-Package Aspose.Cells

Luego importa el espacio de nombres relevante:

using Aspose.Cells;

Crear validación de lista desplegable en Excel utilizando C#

Puedes restringir la entrada del usuario a un conjunto predefinido de opciones creando una validación de lista desplegable en Excel. Esto asegura valores consistentes, especialmente útil en formularios o plantillas.

Siga estos pasos para crear una lista desplegable en Excel usando C#:

  1. Cree un nuevo objeto Workbook.
  2. Acceda a la primera worksheet utilizando su índice.
  3. Defina el objetivo CellArea para la validación.
  4. Accede a la colección de Validaciones de la hoja de trabajo.
  5. Agrega una nueva validación utilizando el método Add().
  6. Establezca el tipo de validación en ValidationType.List.
  7. Define las opciones del menú desplegable utilizando la propiedad Formula1 (separadas por comas).
  8. Agregue el área de la celda a la validación utilizando el método AddArea().
  9. Guarde el libro de trabajo para generar el archivo de Excel validado.

Aquí está el ejemplo de código C# que implementa estos pasos:

// Crear un nuevo libro de Excel
var workbook = new Workbook();

// Accede a la primera hoja de trabajo en el libro de trabajo
var sheet = workbook.Worksheets[0];

// Definir el área de celda objetivo para la validación (A1 en este caso)
var area = new CellArea
{
    StartRow = 0,     // Row index starts from 0 (Row 1)
    EndRow = 0,       // Apply to a single row
    StartColumn = 0,  // Column index starts from 0 (Column A)
    EndColumn = 0     // Apply to a single column
};

// Acceda a la colección de validaciones de la hoja de trabajo
var validations = sheet.Validations;

// Agrega una nueva entrada de validación para el área de celdas especificada.
int index = validations.Add(area);
var validation = validations[index];

// Establecer el tipo de validación en una lista desplegable
validation.Type = ValidationType.List;

// Defina los elementos de la lista permitida (valores separados por comas)
validation.Formula1 = "Red,Green,Blue";

// Establezca el mensaje de entrada que se muestra cuando se selecciona la celda.
validation.InputMessage = "Select a color from the list.";

// Establecer el mensaje de error mostrado si se ingresan datos no válidos
validation.ErrorMessage = "Only Red, Green, or Blue are allowed.";

// Habilitar la visualización del mensaje de error
validation.ShowError = true;

// Aplica el área definida a la validación
validation.AddArea(area);

// Guarda el libro de trabajo en la ruta de archivo especificada.
workbook.Save("dropdown-validation.xlsx");
Crear una Validación de Lista Desplegable en Excel Usando C#

Creando una validación de lista desplegable en Excel utilizando C#

Restringir a Números Enteros en Excel usando C#

La validación de números enteros asegura que los usuarios ingresen solo valores enteros válidos en Excel, lo que es ideal para campos de cantidad, entradas de edad o hojas de presupuesto donde los decimales o el texto no son aceptables.

Digamos que quieres restringir una celda para que acepte solo números entre 1 y 100. Sin esta regla, los usuarios podrían ingresar accidentalmente valores no válidos como 150 o abc, lo que causaría errores de cálculo o problemas de lógica en tu hoja de cálculo.

Con Aspose.Cells for .NET, puedes hacer cumplir esta regla de validación programáticamente en C# sin necesidad de configurarla manualmente en Excel.

El siguiente fragmento de código muestra cómo restringir a los usuarios para que solo ingresen los valores permitidos:

using Aspose.Cells;

// Crear un nuevo libro de Excel
var workbook = new Workbook();

// Acceda a la primera hoja de trabajo en el libro de trabajo.
var sheet = workbook.Worksheets[0];

// Definir el área de la celda objetivo — B2 (fila 1, columna 1)
var area = new CellArea
{
    StartRow = 1,
    EndRow = 1,
    StartColumn = 1,
    EndColumn = 1
};

// Acceder a la colección de validaciones de la hoja de cálculo
var validations = sheet.Validations;

// Añadir una nueva validación y obtener su índice
int index = validations.Add(area);

// Recuperar el objeto de validación utilizando el índice.
var validation = validations[index];

// Establecer el tipo de validación a NúmeroEntero (solo se permiten enteros)
validation.Type = ValidationType.WholeNumber;

// Establecer el operador en Entre
validation.Operator = OperatorType.Between;

// Define el rango válido: 1 a 100
validation.Formula1 = "1";
validation.Formula2 = "100";

// Establecer el mensaje de error que aparece cuando se ingresan datos no válidos.
validation.ErrorMessage = "Enter a number between 1 and 100.";

// Habilitar la visualización de la alerta de error cuando la validación falla
validation.ShowError = true;

// (Optional if not using Add(area) earlier) Agregar el área a la validación explícitamente
validation.AddArea(area);

// Guarda el libro de trabajo en un archivo
workbook.Save("numbers-validation.xlsx");
Restringir a Números Enteros en Excel usando C#

Restringir a Números Enteros en Excel usando C#

Aplicar Validación de Rango de Fechas en Excel utilizando C#

La validación de fechas te ayuda a asegurarte de que los usuarios solo ingresen fechas válidas. Es útil en herramientas de planificación, registros de asistencia, hojas de reservaciones y en cualquier escenario donde necesites fechas dentro de un rango específico.

Por ejemplo, imagina que estás creando una plantilla de programación de proyectos, y deseas restringir a los usuarios a ingresar fechas solo dentro del año 2024. Permitir que los usuarios ingresen una fecha fuera de este rango (como 2023 o 2025) podría romper fórmulas o crear registros inconsistentes.

Aspose.Cells for .NET facilita la aplicación de validaciones de fecha a celdas específicas, de modo que los usuarios solo pueden ingresar fechas que cumplan con sus criterios.

El siguiente fragmento de código demuestra cómo asegurar que los usuarios solo puedan ingresar fechas entre el 1 de enero de 2024 y el 31 de diciembre de 2024. Cualquier cosa fuera del rango provocará un error, ayudándote a mantener datos más limpios y precisos en tu hoja de cálculo.

using Aspose.Cells;

// Crear un nuevo libro de Excel
var workbook = new Workbook();

// Acceder a la primera hoja de trabajo en el libro de trabajo
var sheet = workbook.Worksheets[0];

// Defina el área de la celda para aplicar la validación — C3 (fila 2, columna 2)
var area = new CellArea
{
    StartRow = 2,
    EndRow = 2,
    StartColumn = 2,
    EndColumn = 2
};

// Acceda a la colección de validaciones de la hoja de trabajo.
var validations = sheet.Validations;

// Agregar una nueva validación y obtener su índice.
int index = validations.Add(area);

// Recuperar el objeto de validación
var validation = validations[index];

// Establecer el tipo de validación en Fecha
validation.Type = ValidationType.Date;

// Establecer el operador en Entre (fechas de inicio y fin)
validation.Operator = OperatorType.Between;

// Especificar el rango de fechas válido: 1 de enero de 2024 a 31 de diciembre de 2024
validation.Formula1 = "2024-01-01";
validation.Formula2 = "2024-12-31";

// Establezca el mensaje de error que se mostrará cuando la fecha esté fuera de rango.
validation.ErrorMessage = "Date must be within the year 2024.";

// Habilitar la visualización de la alerta de error
validation.ShowError = true;

// Reaplicar el área para asegurar que la validación esté correctamente vinculada.
validation.AddArea(area);

// Guarde el libro de trabajo en la ruta especificada.
workbook.Save("date-validation.xlsx");

Usar la Validación Basada en Fórmulas en Excel Usando C#

A veces, los menús desplegables simples o los rangos de números fijos no son suficientes, especialmente cuando tus reglas dependen de los valores en otras celdas. Con la validación basada en fórmulas, puedes definir reglas personalizadas utilizando fórmulas al estilo de Excel. Estas reglas pueden hacer referencia a otras celdas y evaluar dinámicamente si la entrada es válida. Por ejemplo, podrías querer asegurarte de que el valor en la celda B1 sea siempre mayor que el valor en A1. Es un escenario común en comparaciones de precios, hojas de puntuación o secuencias de fechas.

Aspose.Cells for .NET soporta completamente esta característica y le permite definir validaciones utilizando fórmulas personalizadas, al igual que en Excel.

El siguiente ejemplo de código muestra cómo aplicar validaciones basadas en fórmulas en Excel utilizando C#.

using Aspose.Cells;

// Crear un nuevo libro de Excel
var workbook = new Workbook();

// Accede a la primera hoja de trabajo en el libro de trabajo.
var sheet = workbook.Worksheets[0];

// Defina el área de la celda para la validación — B1 (fila 0, columna 1)
var area = new CellArea
{
    StartRow = 0,
    EndRow = 0,
    StartColumn = 1,
    EndColumn = 1
};

// Acceder a la colección de validaciones de hojas de trabajo
var validations = sheet.Validations;

// Añadir una nueva validación a la colección y obtener su índice
int index = validations.Add(area);

// Recuperar el objeto de validación por índice
var validation = validations[index];

// Establezca el tipo de validación en Personalizado (utilizado para reglas basadas en fórmulas)
validation.Type = ValidationType.Custom;

// Establecer la fórmula personalizada: B1 debe ser mayor que A1
validation.Formula1 = "=B1>A1";

// Defina el mensaje de error que se muestra cuando la validación falla.
validation.ErrorMessage = "Value in B1 must be greater than A1.";

// Habilitar la visualización de la alerta de error en la entrada no válida
validation.ShowError = true;

// Agregue el área explícitamente para asegurarse de que esté cubierta por la validación.
validation.AddArea(area);

// Guarda el libro de trabajo en la ruta de archivo especificada.
workbook.Save("formula-validation.xlsx");

Configurar mensajes de entrada y de error en Excel utilizando C#

Aplicar la validación de datos es solo parte de la solución. Guiar a los usuarios cuando ingresan datos incorrectos es igual de importante, y ahí es donde las alertas y mensajes personalizados juegan un papel clave.

Aspose.Cells for .NET te permite configurar mensajes de entrada útiles y alertas de error que aparecen cuando los usuarios seleccionan una celda o ingresan datos inválidos. Estos mensajes mejoran la experiencia del usuario, reducen la confusión y hacen que tus plantillas de Excel sean más profesionales.

Por ejemplo, cuando un usuario hace clic en una celda, puedes mostrar un tooltip como

“Solo se permiten valores del 1 al 100.”

Y si ingresan un valor incorrecto, Excel puede mostrar un cuadro de diálogo que dice:

`Entrada inválida: Por favor ingrese un número entre 1 y 100.”

También puedes personalizar cómo Excel responde a la entrada no válida eligiendo si bloquear al usuario por completo (Stop), permitirles continuar con una advertencia (Warning), o simplemente mostrar un mensaje informativo (Information).

Sigue estos pasos para configurar alertas de validación usando C#:

  1. Después de configurar la regla de validación, establece InputTitle e InputMessage para mostrar el texto de ayuda cuando un usuario selecciona la celda.
  2. Defina el ErrorTitle y el ErrorMessage para explicar qué salió mal si la validación falla.
  3. Elige un AlertStyle — las opciones incluyen Stop, Warning y Information.
  4. Establezca ShowError en true para habilitar la alerta de validación.
  5. Guarda el libro de trabajo.

Estas alertas hacen que tu hoja de cálculo sea más intuitiva y fácil de usar, especialmente cuando estás creando plantillas para que otros las utilicen o reutilicen con frecuencia.

var workbook = new Workbook();
var sheet = workbook.Worksheets[0];

// Configurar área de validación — aplicar a la celda C1
var area = new CellArea
{
    StartRow = 0,
    EndRow = 0,
    StartColumn = 2, // Column C = 2
    EndColumn = 2
};

// Agregar validación
int index = sheet.Validations.Add(area);
var validation = sheet.Validations[index];

validation.Type = ValidationType.Custom;

// Esta fórmula siempre evalúa a FALSO
validation.Formula1 = "=FALSE";

// Configurar mensajes de entrada y error
validation.InputTitle = "Input Restricted";
validation.InputMessage = "Try entering anything to see the validation.";
validation.ErrorTitle = "Invalid Input";
validation.ErrorMessage = "You triggered this validation error successfully!";
validation.AlertStyle = ValidationAlertType.Stop;
validation.ShowError = true;
validation.ShowInput = true;

// Aplicar validación al área
validation.AddArea(area);

// Guardar el libro de trabajo validado.
workbook.Save("D:\\Files\\validated_with_alerts.xlsx");

Las alertas mejoran la usabilidad y guían claramente a los usuarios sobre qué ingresar.

Configurar mensajes de entrada y error en Excel utilizando C#

Configurar mensajes de entrada y error en Excel usando C#

Pruébalo gratis

Consigue una licencia temporal gratuita para probar todas las capacidades de Aspose.Cells for .NET sin ningún límite de funciones.

Recursos gratis

Explora más sobre automatización y validación de Excel utilizando estos recursos:

Conclusión

En este artículo, hemos mostrado cómo implementar la validación de datos en Excel utilizando C# con Aspose.Cells for .NET. Desde listas desplegables hasta fórmulas personalizadas, puedes crear hojas de cálculo inteligentes y a prueba de errores sin depender de Excel mismo.

Si tienes alguna pregunta o comentario, no dudes en publicarlos en nuestro foro de soporte gratuito.¡Nos encantaría ayudar!

Ver también