Cómo trabajar con la validación de datos en .NET
Aspose.Cells FOSS for .NET le permite agregar reglas de validación de datos a rangos de celdas mediante Worksheet.Validations (un ValidationCollection). Llame a Add(CellArea) para crear un objeto Validation y establezca su Type usando ValidationType. Los tipos compatibles incluyen List, Decimal y Custom. Instale con dotnet add package Aspose.Cells_FOSS.
Guía paso a paso
Paso 1: Instalar el paquete
dotnet add package Aspose.Cells_FOSSPaso 2: Importar el espacio de nombres
using Aspose.Cells_FOSS;Paso 3: Añadir una validación de lista desplegable
Cree un CellArea con CellArea.CreateCellArea(), añádalo a Worksheet.Validations y establezca ValidationType.List con una lista separada por comas en Formula1.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Dropdown list for A1:A10
var listVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A1", "A10"))];
listVal.Type = ValidationType.List;
listVal.Formula1 = "\"Open,In Progress,Closed\"";
listVal.InCellDropDown = true;
listVal.IgnoreBlank = true;
listVal.InputTitle = "Status";
listVal.InputMessage = "Choose a status from the dropdown";
wb.Save("list-validation.xlsx");
Console.WriteLine("List validation added.");Paso 4: Añadir una validación de rango numérico
Utilice ValidationType.Decimal con OperatorType.Between y Formula1/Formula2 para restringir la entrada numérica.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Decimal range validation for B1:B10 — allow 0 to 100
var numVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B1", "B10"))];
numVal.Type = ValidationType.Decimal;
numVal.Operator = OperatorType.Between;
numVal.Formula1 = "0";
numVal.Formula2 = "100";
numVal.ErrorTitle = "Out of Range";
numVal.ErrorMessage = "Please enter a number between 0 and 100.";
numVal.ShowError = true;
numVal.IgnoreBlank = true;
wb.Save("decimal-validation.xlsx");
Console.WriteLine("Decimal validation added.");Paso 5: Combinar múltiples validaciones en la misma hoja
Puedes agregar cualquier número de validaciones a la misma hoja llamando a Validations.Add() varias veces, cada una con un CellArea diferente.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// List validation for column A (status)
var statusVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A2", "A100"))];
statusVal.Type = ValidationType.List;
statusVal.Formula1 = "\"New,Open,Closed\"";
statusVal.InCellDropDown = true;
// Decimal validation for column B (score)
var scoreVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B2", "B100"))];
scoreVal.Type = ValidationType.Decimal;
scoreVal.Operator = OperatorType.Between;
scoreVal.Formula1 = "0";
scoreVal.Formula2 = "10";
scoreVal.ShowError = true;
wb.Save("combined-validation.xlsx");
Console.WriteLine("Combined validations added to sheet.");Problemas comunes y soluciones
El menú desplegable no aparece en Excel después de guardar.
Asegúrese de que InCellDropDown = true esté configurado en el objeto Validation antes de guardar. El menú desplegable solo es visible en Excel cuando esta bandera está true y se usa ValidationType.List.
La validación permite valores fuera del rango definido.
La validación es aplicada por Excel, no por la biblioteca. Establecer reglas de validación no impide que la propia biblioteca escriba cualquier valor en la celda. La validación se aplica cuando un usuario ingresa datos en Excel.
Formula1 para una validación de lista se muestra como #NAME? en Excel.
Para una lista en línea separada por comas, envuelve la cadena entre comillas escapadas: Formula1 = "\"Option1,Option2,Option3\"". Sin las comillas internas, Excel interpreta el valor como una fórmula de referencia de celda.
OperatorType.Between no se aplica correctamente.
Asegúrese de que tanto Formula1 (mínimo) como Formula2 (máximo) estén configurados como cadenas. La falta de Formula2 para Between deja el límite superior indefinido.
Preguntas frecuentes
¿Puedo validar contra un rango de celdas (p. ej., un rango con nombre)?
Establezca Formula1 a una referencia de rango de celdas como "Sheet2!$A$1:$A$10". Los valores en ese rango se usarán como origen de la lista desplegable.
¿La validación impide que la biblioteca escriba valores no válidos?
No. Las reglas de validación son aplicadas por Excel cuando un usuario ingresa datos. La biblioteca Aspose.Cells FOSS no aplica la validación cuando llamas a Cell.PutValue() programáticamente.
¿Cómo elimino una regla de validación?
Acceda a la regla a través de Worksheet.Validations[index] y use las operaciones ValidationCollection para gestionar las reglas. Alternativamente, cree un nuevo modelo de libro de trabajo sin las reglas no deseadas.
¿Cuál es el número máximo de validaciones por hoja?
El formato XLSX admite hasta 65.530 reglas de validación por hoja de cálculo.