Data Validation i Excel med C#

Data validation in Excel ensures that users input only valid data in worksheets. In designing forms, collecting data, or building financial models, data validations help maintain structure and minimize user errors. In this post, we will show you how to apply data validation in Excel using C# programmatically.

Denna artikel täcker följande ämnen:

C# Excel Data Validation Library

Datavalidering säkerställer att användare anger giltig och förväntad inmatning i Excel-kalkylblad. Vi kommer att använda Aspose.Cells for .NET API:et för att lägga till olika typer av datavalidering i Excel. Det erbjuder ett kraftfullt och flexibelt tillvägagångssätt för att definiera regler som rullgardinslistor, numeriska intervall, datalimiter och anpassade formler, allt utan att kräva Microsoft Excel.

Install the Aspose.Cells for .NET via NuGet package in your project:

PM> Install-Package Aspose.Cells

Då importera det relevanta namnutrymmet:

using Aspose.Cells;

Skapa rullgardinslistvalidation i Excel med C#

Du kan begränsa användarinmatning till en fördefinierad uppsättning alternativ genom att skapa en rullgardinslista validering i Excel. Detta säkerställer konsekventa värden, särskilt användbart i formulär eller mallar.

Följ dessa steg för att skapa en rullgardinslista i Excel med C#:

  1. Skapa ett nytt Workbook-objekt.
  2. Åtkomst till det första worksheet-arket med hjälp av dess index.
  3. Definiera målet CellArea för validering.
  4. Åtkomst till kalkylbladets valideringssamling.
  5. Lägg till en ny validering med hjälp av Add()-metoden.
  6. Ställ in valideringstypen till ValidationType.List.
  7. Definiera rullgardinsalternativen med hjälp av Formula1-egenskapen (komma-separerad).
  8. Lägg till cellområdet till valideringen med AddArea()-metoden.
  9. Spara arbetsboken för att generera den validerade Excel-filen.

Här är C# kodexemplet som implementerar dessa steg:

// Skapa en ny Excel-arbetsbok
var workbook = new Workbook();

// Åtkomst till det första kalkylbladet i arbetsboken
var sheet = workbook.Worksheets[0];

// Definiera målcellområdet för validering (A1 i det här fallet)
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
};

// Åtkomst till valideringskollektionen av arbetsbladet
var validations = sheet.Validations;

// Lägg till en ny valideringspost för det angivna cellområdet
int index = validations.Add(area);
var validation = validations[index];

// Ställ in valideringstypen till en rullgardinslista
validation.Type = ValidationType.List;

// Definiera de tillåtna listobjekten (komma-separerade värden)
validation.Formula1 = "Red,Green,Blue";

// Ställ in meddelandet som visas när cellen är vald
validation.InputMessage = "Select a color from the list.";

// Ställ in felmeddelandet som visas om ogiltiga uppgifter anges
validation.ErrorMessage = "Only Red, Green, or Blue are allowed.";

// Aktivera visningen av felmeddelandet
validation.ShowError = true;

// Applicera det definierade området på valideringen
validation.AddArea(area);

// Spara arbetsboken till den specificerade filvägen
workbook.Save("dropdown-validation.xlsx");
Skapa en rullgardinslistvalidering i Excel med C#

Skapa en rullgardinslista validering i Excel med C#

Begränsa till hela tal i Excel med C#

Heltalsvalidering säkerställer att användare endast anger giltiga heltalsvärden i Excel, vilket är idealiskt för kvantitetsfält, åldersinmatningar eller budgetblad där decimaler eller text inte är acceptabla.

Låt oss säga att du vill begränsa en cell att endast acceptera nummer mellan 1 och 100. Utan denna regel kan användare av misstag ange ogiltiga indata som 150 eller abc, vilket orsakar beräkningsfel eller logiska problem i ditt kalkylark.

Med Aspose.Cells för .NET kan du genomdriva denna valideringsregel programmässigt i C# utan att behöva konfigurera den manuellt i Excel.

Följande kodsnutt visar hur man kan begränsa användare att endast mata in de tillåtna värdena:

using Aspose.Cells;

// Skapa en ny Excel-arbetsbok
var workbook = new Workbook();

// Få tillgång till det första kalkylbladet i arbetsboken
var sheet = workbook.Worksheets[0];

// Definiera målcellområdet — B2 (rad 1, kolumn 1)
var area = new CellArea
{
    StartRow = 1,
    EndRow = 1,
    StartColumn = 1,
    EndColumn = 1
};

// Åtkomst till kalkylbladets valideringssamling
var validations = sheet.Validations;

// Lägg till en ny validering och hämta dess index
int index = validations.Add(area);

// Hämta valideringsobjektet med hjälp av indexet
var validation = validations[index];

// Ställ in valideringstypen till Heltal (endast heltal är tillåtna)
validation.Type = ValidationType.WholeNumber;

// Ställ in operatorn på Mellan
validation.Operator = OperatorType.Between;

// Definiera det giltiga intervallet: 1 till 100
validation.Formula1 = "1";
validation.Formula2 = "100";

// Ställ in felmeddelandet som visas när ogiltiga data matas in.
validation.ErrorMessage = "Enter a number between 1 and 100.";

// Aktivera visning av felmeddelande när valideringen misslyckas
validation.ShowError = true;

// (Optional if not using Add(area) earlier) Lägg till området till valideringen uttryckligen
validation.AddArea(area);

// Spara arbetsboken till en fil
workbook.Save("numbers-validation.xlsx");
Restrict to Whole Numbers in Excel using C#

Restrict to Whole Numbers in Excel using C#

Apply Date Range Validation in Excel using C#

Datumvalidering hjälper dig att säkerställa att användare endast anger giltiga datum. Det är användbart i planeringsverktyg, närvaroregister, bokningsblad och alla situationer där du behöver datum inom ett specifikt intervall.

Till exempel, föreställ dig att du bygger en projektplaneringsmall, och du vill begränsa användarna till att endast ange datum inom året 2024. Att tillåta användare att ange ett datum utanför detta intervall (som 2023 eller 2025) kan bryta formler eller skapa inkonsekventa poster.

Aspose.Cells för .NET gör det enkelt att tillämpa datavalideringar på specifika celler, så att användare endast kan ange datum som uppfyller dina kriterier.

Den följande kodsnutten visar hur man säkerställer att användare endast kan ange datum mellan 1 januari 2024 och 31 december 2024. Något utanför intervallet kommer att utlösa ett fel, vilket hjälper dig att behålla renare, mer noggranna data i ditt kalkylblad.

using Aspose.Cells;

// Skapa en ny Excel-arbetsbok
var workbook = new Workbook();

// Åtkomst till det första kalkylbladet i arbetsboken
var sheet = workbook.Worksheets[0];

// Definiera cellområdet för att tillämpa validering — C3 (rad 2, kolumn 2)
var area = new CellArea
{
    StartRow = 2,
    EndRow = 2,
    StartColumn = 2,
    EndColumn = 2
};

// Åtkomst till valideringssamlingen av kalkylbladet
var validations = sheet.Validations;

// Lägg till en ny validering och hämta dess index
int index = validations.Add(area);

// Hämta valideringsobjektet
var validation = validations[index];

// Ställ in valideringstypen till Datum
validation.Type = ValidationType.Date;

// Ställ in operatören på Mellan (start- och slutdatum)
validation.Operator = OperatorType.Between;

// Specify the valid date range: Jan 1, 2024 to Dec 31, 2024
validation.Formula1 = "2024-01-01";
validation.Formula2 = "2024-12-31";

// Ställ in felmeddelandet som ska visas när datumet är utom räckhåll
validation.ErrorMessage = "Date must be within the year 2024.";

// Aktivera visning av felmeddelande
validation.ShowError = true;

// Återanvänd området för att säkerställa att valideringen är korrekt bunden
validation.AddArea(area);

// Spara arbetsboken till den angivna sökvägen
workbook.Save("date-validation.xlsx");

Använd formelbaserad validering i Excel med C#

Ibland räcker inte enkla rullgardinsmenyer eller fasta nummerintervall, särskilt när dina regler beror på värdena i andra celler. Med formelbaserad validering kan du definiera anpassade regler med hjälp av Excel-stilformler. Dessa regler kan referera till andra celler och dynamiskt utvärdera om inmatningen är giltig. Till exempel kan du vilja säkerställa att värdet i cell B1 alltid är större än värdet i A1. Det är ett vanligt scenario i prisjämförelser, poängblad eller datasekvenser.

Aspose.Cells för .NET stöder fullt ut denna funktion och låter dig definiera validering med hjälp av anpassade formler precis som i Excel.

Det följande kodexemplet visar hur man tillämpar formelbaserade valideringar i Excel med C#.

using Aspose.Cells;

// Skapa en ny Excel-arbetsbok
var workbook = new Workbook();

// Åtkomst till det första kalkylbladet i arbetsboken
var sheet = workbook.Worksheets[0];

// Definiera cellområdet för validering — B1 (rad 0, kolumn 1)
var area = new CellArea
{
    StartRow = 0,
    EndRow = 0,
    StartColumn = 1,
    EndColumn = 1
};

// Åtkomst till valideringskollektionen för arbetsblad.
var validations = sheet.Validations;

// Lägg till en ny validering i samlingen och få dess index
int index = validations.Add(area);

// Hämta valideringsobjektet med index
var validation = validations[index];

// Ställ in valideringstypen till Anpassad (används för formelbaserade regler)
validation.Type = ValidationType.Custom;

// Ställ in den anpassade formeln: B1 måste vara större än A1
validation.Formula1 = "=B1>A1";

// Definiera felmeddelandet som visas när valideringen misslyckas
validation.ErrorMessage = "Value in B1 must be greater than A1.";

// Aktivera visning av felmeddelande vid ogiltig inmatning
validation.ShowError = true;

// Lägg till området explicit för att säkerställa att det omfattas av validering
validation.AddArea(area);

// Spara arbetsboken till den angivna filvägen
workbook.Save("formula-validation.xlsx");

Konfigurera indata och felmeddelanden i Excel med C#

Att tillämpa datavalidering är bara en del av lösningen. Att vägleda användare när de anger felaktiga uppgifter är lika viktigt, och det är där anpassade varningar och meddelanden spelar en nyckelroll.

Aspose.Cells för .NET gör att du kan ställa in hjälpsamma inmatningsmeddelanden och felmeddelanden som visas när användare väljer en cell eller anger ogiltiga data. Dessa meddelanden förbättrar användarupplevelsen, minskar förvirringen och gör dina Excel-mallar mer professionella.

Till exempel, när en användare klickar på en cell kan du visa en tooltip som

`Endast värden från 1 till 100 är tillåtna.”

Och om de anger ett felaktigt värde kan Excel visa en dialogruta som säger:

`Ogiltig inmatning: Vänligen ange ett nummer mellan 1 och 100.”

Du kan också anpassa hur Excel reagerar på ogiltig inmatning genom att välja om du vill blockera användaren helt (Stop), tillåta dem att fortsätta med en varning (Warning), eller helt enkelt visa ett informationsmeddelande (Information).

Följ dessa steg för att konfigurera valideringsaviseringar med C#:

  1. Efter att ha ställt in valideringsregeln, ställ in InputTitle och InputMessage för att visa hjältext när en användare väljer cellen.
  2. Definiera ErrorTitle och ErrorMessage för att förklara vad som gick fel om valideringen misslyckas.
  3. Välj en AlertStyle — alternativen inkluderar Stop, Warning och Information.
  4. Ställ in ShowErrortrue för att aktivera valideringsmeddelandet.
  5. Spara arbetsboken.

Dessa varningar gör ditt kalkylblad mer intuitivt och användarvänligt, särskilt när du skapar mallar för andra att använda eller återanvända ofta.

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

// Ställ in valideringsområde — tillämpa på cell C1
var area = new CellArea
{
    StartRow = 0,
    EndRow = 0,
    StartColumn = 2, // Column C = 2
    EndColumn = 2
};

// Lägg till validering
int index = sheet.Validations.Add(area);
var validation = sheet.Validations[index];

validation.Type = ValidationType.Custom;

// Denna formel utvärderas alltid till FALSE
validation.Formula1 = "=FALSE";

// Ställ in inmatnings- och felmeddelanden
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;

// Tillämpa validering på område
validation.AddArea(area);

// Spara den validerade arbetsboken
workbook.Save("D:\\Files\\validated_with_alerts.xlsx");

De varningar förbättrar användbarheten och guidar tydligt användarna om vad de ska ange.

Konfigurera inmatnings- och felmeddelanden i Excel med C#

Konfigurera inmatnings- och felmeddelanden i Excel med C#

Prova det gratis

Hämta en gratis tillfällig licens för att testa hela funktionaliteten i Aspose.Cells för .NET utan några begränsningar i funktioner.

Gratis resurser

Utforska mer om Excel-automatisering och validering med hjälp av dessa resurser:

Slutsats

I den här artikeln har vi visat hur man implementerar datavalidering i Excel med C# med Aspose.Cells för .NET. Från rullgardinsmenyer till anpassade formler kan du bygga intelligenta och felfria kalkylark utan att förlita dig på Excel själv.

Om du har några frågor eller feedback, tveka inte att skriva dem på vårt free support forum.Vi skulle älska att hjälpa till!

Se också