Como trabalhar com validação de dados no .NET
Aspose.Cells FOSS for .NET permite que você adicione regras de validação de dados a intervalos de células através de Worksheet.Validations (um ValidationCollection). Chame Add(CellArea) para criar um objeto Validation e definir seu Type usando ValidationType. Os tipos suportados incluem List, Decimal e Custom. Instale com dotnet add package Aspose.Cells_FOSS.
Guia passo a passo
Etapa 1: Instalar o Pacote
dotnet add package Aspose.Cells_FOSSEtapa 2: Importar o Namespace
using Aspose.Cells_FOSS;Passo 3: Adicionar uma validação de lista suspensa
Crie um CellArea com CellArea.CreateCellArea(), adicione‑o a Worksheet.Validations e defina ValidationType.List com uma lista separada por vírgulas em 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.");Etapa 4: Adicionar uma Validação de Intervalo Numérico
Use ValidationType.Decimal com OperatorType.Between e Formula1/Formula2 para restringir a 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.");Etapa 5: Combinar Múltiplas Validações na Mesma Planilha
Você pode adicionar qualquer número de validações à mesma planilha chamando Validations.Add() várias vezes, cada uma com um 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 Comuns e Soluções
O menu suspenso não aparece no Excel após salvar.
Certifique-se de que InCellDropDown = true esteja definido no objeto Validation antes de salvar. O menu suspenso só é visível no Excel quando esta flag está true e ValidationType.List é usado.
A validação permite valores fora do intervalo definido. A validação é aplicada pelo Excel, não pela biblioteca. Definir regras de validação não impede que a própria biblioteca escreva qualquer valor na célula. A validação é aplicada quando um usuário insere dados no Excel.
Formula1 para uma validação de lista aparece como #NAME? no Excel.
Para uma lista inline separada por vírgulas, envolva a string em aspas escapadas: Formula1 = "\"Option1,Option2,Option3\"". Sem as aspas internas, o Excel trata o valor como uma fórmula de referência de célula.
OperatorType.Between não está sendo aplicado corretamente.
Certifique‑se de que tanto Formula1 (mínimo) quanto Formula2 (máximo) estejam definidos como strings. A ausência de Formula2 para Between deixa o limite superior indefinido.
Perguntas Frequentes
Posso validar contra um intervalo de células (por exemplo, um intervalo nomeado)?
Defina Formula1 como uma referência de intervalo de células, como "Sheet2!$A$1:$A$10". Os valores nesse intervalo serão usados como a fonte da lista suspensa.
A validação impede que a biblioteca escreva valores inválidos?
Não. As regras de validação são aplicadas pelo Excel quando um usuário insere dados. A biblioteca Aspose.Cells FOSS não aplica validação quando você chama Cell.PutValue() programaticamente.
Como removo uma regra de validação?
Acesse a regra através de Worksheet.Validations[index] e use as operações ValidationCollection para gerenciar regras. Alternativamente, crie um novo modelo de planilha sem as regras indesejadas.
Qual é o número máximo de validações por planilha?
O formato XLSX suporta até 65.530 regras de validação por planilha.