Como trabalhar com a validação de dados em .NET
Aspose.Cells FOSS for .NET enables you to add data validation rules to cell ranges through Worksheet.Validations (a) ValidationCollection) Chamada Add(CellArea) para criar um Validation objecto e definir o seu Type Utilização de: ValidationType.Os tipos apoiados incluem: List, Decimal, e Custom.Instalar com: dotnet add package Aspose.Cells_FOSS.
Guia passo a passo
Passo 1: Instalar o pacote
dotnet add package Aspose.Cells_FOSSPasso 2: Importar o espaço de nomes
using Aspose.Cells_FOSS;Passo 3: Adicionar uma lista de validação em caixa suspensa
Criar um CellArea com: CellArea.CreateCellArea(), adicione-o a: Worksheet.Validations, e definido 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.");Passo 4: Adicionar uma validação de intervalo numérico
Utilização: ValidationType.Decimal com: OperatorType.Between e a) Formula1/Formula2 para limitar 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.");Passo 5: Combinar múltiplas validações na mesma folha
Pode adicionar qualquer número de validações para a mesma folha, chamando Validations.Add() várias vezes, cada uma com um número diferente de 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 comuns e soluções
O menu suspenso não aparece no Excel após a salvação. Assegurar a InCellDropDown = true é definido no ponto de vista da Validation Objeto antes de salvar. O menu suspenso só é visível no Excel quando esta bandeira está true e a) ValidationType.List é utilizado.
A validação permite valores fora do intervalo definido. A validação é aplicada pelo Excel, não pela biblioteca. Configurar regras de validações não impede que a própria biblioteca escreva qualquer valor na célula. A valididade é usada quando um usuário insere dados no Excel.
Formula1 para uma lista de validação, indica como: #NAME? no Excel. Para uma lista em linha separada por vírgulas, envolva a cadeia de palavras com citações escapadas: Formula1 = "\"Option1,Option2,Option3\"".Sem as citações internas, o Excel trata o valor como uma fórmula de referência de célula.
OperatorType.Between não aplicada corretamente. Assegurar que ambos os Formula1 (mínimo) e Formula2 (máximo) são definidos como cadeias de caracteres. Falta Formula2 para o Between deixa o limite superior indefinido.
Perguntas Frequentes
Posso validar contra um intervalo de células (por exemplo, umintervalo com nome)?
Set (s) Formula1 a uma referência de um intervalo de células, como: "Sheet2!$A$1:$A$10".Os valores nesse intervalo serão utilizados como 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 a validações ao chamar o computador para fazer uma chamada. Cell.PutValue() de forma programática.
Como eu removo uma regra de validação?
Acesse a regra através do Worksheet.Validations[index] e utilização ValidationCollection Como alternativa, crie um novo modelo de livro sem as regras indesejadas.
Qual é o número máximo de validações por folha?
O formato XLSX suporta até 65.530 regras de validação por folha de cálculo.