Cómo trabajar con la validación de datos en .NET
Aspose.Cells FOSS for .NET enables you to add data validation rules to cell ranges through Worksheet.Validations (a) a ValidationCollection• llamadas Add(CellArea) Para crear una Validation Objeto y establece su Type Utilizando ValidationType.Los tipos apoyados incluyen List, Decimal,y, Custom.Instalar con dotnet add package Aspose.Cells_FOSS.
Guía paso a paso
Paso 1: Instalar el paquete
dotnet add package Aspose.Cells_FOSSPaso 2: Importación del espacio de nombre
using Aspose.Cells_FOSS;Paso 3: Agregar una validación de dropdown de lista
Creación a CellArea con CellArea.CreateCellArea(),Añadimos a Worksheet.Validations,Y SETT ValidationType.List con una lista separada en el 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: Agregar una validación de rango numérico
Uso ValidationType.Decimal con OperatorType.Between y Formula1/Formula2 para limitar 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 de texto
Puedes agregar cualquier número de validaciones a la misma hoja llamando Validations.Add() múltiples veces, cada uno con un CellArea.
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 y soluciones comunes
La caída no aparece en Excel después de salvar. Seguridad InCellDropDown = true Se establece en el Validation El despliegue es visible en Excel sólo cuando esta bandera se encuentra true y ValidationType.List Se usa .
La validación permite valores fuera del rango definido. La validación se aplica por Excel, no por la biblioteca.La configuración de las reglas de validacion no impide a la propia biblioteca de escribir ningún valor en la célula.
Formula1 Para una lista de validación muestra que #NAME? En Excel. Para una lista separada por comma en línea, encoge la cinta en las citas escapadas: Formula1 = "\"Option1,Option2,Option3\"".Sin las citas internas, Excel trata el valor como una fórmula de referencia celular.
OperatorType.Between No aplicar correctamente. Aseguran los dos Formula1 (Minimo de los Formula2 (maximum) se establecen como líneas. desaparecido Formula2 Para Between Deja el límite superior indefinido.
Preguntas frecuentes
¿Puedo validar contra una gama de células (por ejemplo, un nombre de la gama)?
Sitio Formula1 a una referencia de rango celular como el "Sheet2!$A$1:$A$10".Los valores en ese rango se utilizarán como la fuente de lista de descenso.
¿La validación impide que la biblioteca escriba valores invalidos?
No. Las reglas de validación son aplicadas por Excel cuando un usuario entra los datos.La biblioteca de FOSS no aplica la validacion cuando llama Cell.PutValue() de manera programática.
¿Cómo puedo eliminar una regla de validación?
Acceso a la regla por medio de Worksheet.Validations[index] y usar ValidationCollection Alternativamente, crear un nuevo modelo de libro sin las reglas no deseadas.
¿Cuál es el número máximo de validaciones por hoja?
El formato XLSX soporta hasta 65,530 reglas de validación por hoja de trabajo.