Datenvalidierung
Datenvalidierungstypen und -ausführung
Die Datenvalidierung ist die Fähigkeit, Regeln bezüglich der in ein Arbeitsblatt eingegebenen Daten festzulegen. Verwenden Sie beispielsweise die Validierung, um sicherzustellen, dass eine Spalte mit der Bezeichnung DATE nur Datumsangaben oder eine andere Spalte nur Zahlen enthält. Sie könnten sogar sicherstellen, dass eine Spalte mit der Bezeichnung DATE nur Daten innerhalb eines bestimmten Bereichs enthält. Mit der Datenvalidierung können Sie steuern, was in die Zellen des Arbeitsblatts eingegeben wird.
Microsoft Excel unterstützt eine Reihe verschiedener Arten der Datenvalidierung. Jeder Typ wird verwendet, um zu steuern, welcher Datentyp in eine Zelle oder einen Zellbereich eingegeben wird. Unten veranschaulichen Code-Snippets, wie dies validiert werden kann:
- Numbers ganz sind, das heißt, dass sie keinen Dezimalteil haben.
- Dezimalzahlen folgen der richtigen Struktur. Das Codebeispiel definiert, dass ein Zellbereich zwei Dezimalstellen haben sollte.
- Werte sind auf eine Werteliste beschränkt. Die Listenvalidierung definiert eine separate Liste von Werten, die auf eine Zelle oder einen Zellbereich angewendet werden können.
- Daten fallen in einen bestimmten Bereich.
- Eine Zeit liegt in einem bestimmten Bereich.
- Ein Text liegt innerhalb einer vorgegebenen Zeichenlänge.
Datenvalidierung mit Microsoft Excel
So erstellen Sie Validierungen mit Microsoft Excel:
- Wählen Sie in einem Arbeitsblatt die Zellen aus, auf die Sie die Validierung anwenden möchten.
- Von demDaten Menü, auswählenValidierung. Der Validierungsdialog wird angezeigt.
- Drücke denEinstellungen Registerkarte und geben Sie die Einstellungen ein.
Datenvalidierung mit Aspose.Cells
Die Datenvalidierung ist eine leistungsstarke Funktion zur Validierung der in Arbeitsblätter eingegebenen Informationen. Mit der Datenvalidierung können Entwickler Benutzern eine Auswahlliste zur Verfügung stellen, Dateneingaben auf einen bestimmten Typ oder eine bestimmte Größe beschränken usw. In Aspose.Cells, jederArbeitsblatt Klasse hat einValidierungenEigenschaft, die eine Sammlung von darstelltValidierung Objekte. Um die Validierung einzurichten, legen Sie einige derValidierungKlasseneigenschaften wie folgt:
- Typ – stellt den Validierungstyp dar, der durch Verwendung eines der vordefinierten Werte in angegeben werden kannValidierungstypAufzählung.
- Operator – stellt den bei der Validierung zu verwendenden Operator dar, der durch Verwendung eines der vordefinierten Werte in angegeben werden kannBetreibertypAufzählung.
- Formel1 – stellt den Wert oder Ausdruck dar, der dem ersten Teil der Datenvalidierung zugeordnet ist.
- Formel2 – stellt den Wert oder Ausdruck dar, der dem zweiten Teil der Datenvalidierung zugeordnet ist.
Wenn dieValidierung Objekteigenschaften konfiguriert wurden, können Entwickler die verwendenZellbereich-Struktur zum Speichern von Informationen über den Zellbereich, der mithilfe der erstellten Validierung validiert wird.
Arten der Datenvalidierung
DasValidierungstypAufzählung hat folgende Mitglieder:
Mitgliedsname | Beschreibung |
---|---|
BeliebigerWert | Bezeichnet einen Wert eines beliebigen Typs. |
Ganze Zahl | Bezeichnet den Validierungstyp für ganze Zahlen. |
Dezimal | Bezeichnet den Validierungstyp für Dezimalzahlen. |
Aufführen | Gibt den Validierungstyp für die Dropdown-Liste an. |
Datum | Bezeichnet den Validierungstyp für Datumsangaben. |
Zeit | Gibt den Validierungstyp für die Zeit an. |
Textlänge | Bezeichnet den Validierungstyp für die Länge des Textes. |
Brauch | Bezeichnet den benutzerdefinierten Validierungstyp. |
Ganzzahlige Datenvalidierung
Bei dieser Art der Validierung können Benutzer nur ganze Zahlen innerhalb eines bestimmten Bereichs in die validierten Zellen eingeben. Die folgenden Codebeispiele zeigen, wie der Validierungstyp WholeNumber implementiert wird. Das Beispiel erstellt dieselbe Datenvalidierung mit Aspose.Cells, die wir oben mit Microsoft Excel erstellt haben.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Create a workbook object. | |
Workbook workbook = new Workbook(); | |
// Create a worksheet and get the first worksheet. | |
Worksheet ExcelWorkSheet = workbook.Worksheets[0]; | |
// Accessing the Validations collection of the worksheet | |
ValidationCollection validations = workbook.Worksheets[0].Validations; | |
// Create Cell Area | |
CellArea ca = new CellArea(); | |
ca.StartRow = 0; | |
ca.EndRow = 0; | |
ca.StartColumn = 0; | |
ca.EndColumn = 0; | |
// Creating a Validation object | |
Validation validation = validations[validations.Add(ca)]; | |
// Setting the validation type to whole number | |
validation.Type = ValidationType.WholeNumber; | |
// Setting the operator for validation to Between | |
validation.Operator = OperatorType.Between; | |
// Setting the minimum value for the validation | |
validation.Formula1 = "10"; | |
// Setting the maximum value for the validation | |
validation.Formula2 = "1000"; | |
// Applying the validation to a range of cells from A1 to B2 using the | |
// CellArea structure | |
CellArea area; | |
area.StartRow = 0; | |
area.EndRow = 1; | |
area.StartColumn = 0; | |
area.EndColumn = 1; | |
// Adding the cell area to Validation | |
validation.AddArea(area); | |
// Save the workbook. | |
workbook.Save(dataDir + "output.out.xls"); |
Listendatenvalidierung
Diese Art der Validierung ermöglicht es dem Benutzer, Werte aus einer Dropdown-Liste einzugeben. Es stellt eine Liste bereit: eine Reihe von Zeilen, die Daten enthalten. Im Beispiel wird ein zweites Arbeitsblatt hinzugefügt, um die Listenquelle aufzunehmen. Benutzer können nur Werte aus der Liste auswählen. Der Validierungsbereich ist der Zellbereich A1:A5 im ersten Arbeitsblatt.
Wichtig ist hier, dass Sie die einstellenValidierung.InCellDropDown Eigentum zuwahr.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Create a workbook object. | |
Workbook workbook = new Workbook(); | |
// Get the first worksheet. | |
Worksheet worksheet1 = workbook.Worksheets[0]; | |
// Add a new worksheet and access it. | |
int i = workbook.Worksheets.Add(); | |
Worksheet worksheet2 = workbook.Worksheets[i]; | |
// Create a range in the second worksheet. | |
Range range = worksheet2.Cells.CreateRange("E1", "E4"); | |
// Name the range. | |
range.Name = "MyRange"; | |
// Fill different cells with data in the range. | |
range[0, 0].PutValue("Blue"); | |
range[1, 0].PutValue("Red"); | |
range[2, 0].PutValue("Green"); | |
range[3, 0].PutValue("Yellow"); | |
// Get the validations collection. | |
ValidationCollection validations = worksheet1.Validations; | |
// Create Cell Area | |
CellArea ca = new CellArea(); | |
ca.StartRow = 0; | |
ca.EndRow = 0; | |
ca.StartColumn = 0; | |
ca.EndColumn = 0; | |
// Create a new validation to the validations list. | |
Validation validation = validations[validations.Add(ca)]; | |
// Set the validation type. | |
validation.Type = Aspose.Cells.ValidationType.List; | |
// Set the operator. | |
validation.Operator = OperatorType.None; | |
// Set the in cell drop down. | |
validation.InCellDropDown = true; | |
// Set the formula1. | |
validation.Formula1 = "=MyRange"; | |
// Enable it to show error. | |
validation.ShowError = true; | |
// Set the alert type severity level. | |
validation.AlertStyle = ValidationAlertType.Stop; | |
// Set the error title. | |
validation.ErrorTitle = "Error"; | |
// Set the error message. | |
validation.ErrorMessage = "Please select a color from the list"; | |
// Specify the validation area. | |
CellArea area; | |
area.StartRow = 0; | |
area.EndRow = 4; | |
area.StartColumn = 0; | |
area.EndColumn = 0; | |
// Add the validation area. | |
validation.AddArea(area); | |
// Save the Excel file. | |
workbook.Save(dataDir + "output.out.xls"); |
Datumsdatenvalidierung
Bei dieser Art der Validierung geben Benutzer Datumswerte innerhalb eines bestimmten Bereichs oder nach bestimmten Kriterien in die validierten Zellen ein. Im Beispiel ist der Benutzer auf die Eingabe von Daten zwischen 1970 und 1999 beschränkt. Hier ist der Validierungsbereich die Zelle B1.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Create a workbook. | |
Workbook workbook = new Workbook(); | |
// Obtain the cells of the first worksheet. | |
Cells cells = workbook.Worksheets[0].Cells; | |
// Put a string value into the A1 cell. | |
cells["A1"].PutValue("Please enter Date b/w 1/1/1970 and 12/31/1999"); | |
// Set row height and column width for the cells. | |
cells.SetRowHeight(0, 31); | |
cells.SetColumnWidth(0, 35); | |
// Get the validations collection. | |
ValidationCollection validations = workbook.Worksheets[0].Validations; | |
// Create Cell Area | |
CellArea ca = new CellArea(); | |
ca.StartRow = 0; | |
ca.EndRow = 0; | |
ca.StartColumn = 0; | |
ca.EndColumn = 0; | |
// Add a new validation. | |
Validation validation = validations[validations.Add(ca)]; | |
// Set the data validation type. | |
validation.Type = ValidationType.Date; | |
// Set the operator for the data validation | |
validation.Operator = OperatorType.Between; | |
// Set the value or expression associated with the data validation. | |
validation.Formula1 = "1/1/1970"; | |
// The value or expression associated with the second part of the data validation. | |
validation.Formula2 = "12/31/1999"; | |
// Enable the error. | |
validation.ShowError = true; | |
// Set the validation alert style. | |
validation.AlertStyle = ValidationAlertType.Stop; | |
// Set the title of the data-validation error dialog box | |
validation.ErrorTitle = "Date Error"; | |
// Set the data validation error message. | |
validation.ErrorMessage = "Enter a Valid Date"; | |
// Set and enable the data validation input message. | |
validation.InputMessage = "Date Validation Type"; | |
validation.IgnoreBlank = true; | |
validation.ShowInput = true; | |
// Set a collection of CellArea which contains the data validation settings. | |
CellArea cellArea; | |
cellArea.StartRow = 0; | |
cellArea.EndRow = 0; | |
cellArea.StartColumn = 1; | |
cellArea.EndColumn = 1; | |
// Add the validation area. | |
validation.AddArea(cellArea); | |
// Save the Excel file. | |
workbook.Save(dataDir + "output.out.xls"); |
Zeitdatenvalidierung
Bei dieser Art der Validierung können Benutzer Zeiten innerhalb eines bestimmten Bereichs oder bestimmte Kriterien erfüllende Zeiten in die validierten Zellen eingeben. Im Beispiel ist der Benutzer auf die Eingabe von Zeiten zwischen 09:00 und 11:30 Uhr beschränkt. Hier ist der Validierungsbereich die B1-Zelle.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Create a workbook. | |
Workbook workbook = new Workbook(); | |
// Obtain the cells of the first worksheet. | |
Cells cells = workbook.Worksheets[0].Cells; | |
// Put a string value into A1 cell. | |
cells["A1"].PutValue("Please enter Time b/w 09:00 and 11:30 'o Clock"); | |
// Set the row height and column width for the cells. | |
cells.SetRowHeight(0, 31); | |
cells.SetColumnWidth(0, 35); | |
// Get the validations collection. | |
ValidationCollection validations = workbook.Worksheets[0].Validations; | |
// Create Cell Area | |
CellArea ca = new CellArea(); | |
ca.StartRow = 0; | |
ca.EndRow = 0; | |
ca.StartColumn = 0; | |
ca.EndColumn = 0; | |
// Add a new validation. | |
Validation validation = validations[validations.Add(ca)]; | |
// Set the data validation type. | |
validation.Type = ValidationType.Time; | |
// Set the operator for the data validation. | |
validation.Operator = OperatorType.Between; | |
// Set the value or expression associated with the data validation. | |
validation.Formula1 = "09:00"; | |
// The value or expression associated with the second part of the data validation. | |
validation.Formula2 = "11:30"; | |
// Enable the error. | |
validation.ShowError = true; | |
// Set the validation alert style. | |
validation.AlertStyle = ValidationAlertType.Information; | |
// Set the title of the data-validation error dialog box. | |
validation.ErrorTitle = "Time Error"; | |
// Set the data validation error message. | |
validation.ErrorMessage = "Enter a Valid Time"; | |
// Set and enable the data validation input message. | |
validation.InputMessage = "Time Validation Type"; | |
validation.IgnoreBlank = true; | |
validation.ShowInput = true; | |
// Set a collection of CellArea which contains the data validation settings. | |
CellArea cellArea; | |
cellArea.StartRow = 0; | |
cellArea.EndRow = 0; | |
cellArea.StartColumn = 1; | |
cellArea.EndColumn = 1; | |
// Add the validation area. | |
validation.AddArea(cellArea); | |
// Save the Excel file. | |
workbook.Save(dataDir + "output.out.xls"); |
Überprüfung der Textlängendaten
Bei dieser Art der Validierung können Benutzer Textwerte einer bestimmten Länge in die validierten Zellen eingeben. Im Beispiel ist der Benutzer darauf beschränkt, Zeichenfolgenwerte mit nicht mehr als 5 Zeichen einzugeben. Der Validierungsbereich ist die B1-Zelle.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Create directory if it is not already present. | |
bool IsExists = System.IO.Directory.Exists(dataDir); | |
if (!IsExists) | |
System.IO.Directory.CreateDirectory(dataDir); | |
// Create a new workbook. | |
Workbook workbook = new Workbook(); | |
// Obtain the cells of the first worksheet. | |
Cells cells = workbook.Worksheets[0].Cells; | |
// Put a string value into A1 cell. | |
cells["A1"].PutValue("Please enter a string not more than 5 chars"); | |
// Set row height and column width for the cell. | |
cells.SetRowHeight(0, 31); | |
cells.SetColumnWidth(0, 35); | |
// Get the validations collection. | |
ValidationCollection validations = workbook.Worksheets[0].Validations; | |
// Create Cell Area | |
CellArea ca = new CellArea(); | |
ca.StartRow = 0; | |
ca.EndRow = 0; | |
ca.StartColumn = 0; | |
ca.EndColumn = 0; | |
// Add a new validation. | |
Validation validation = validations[validations.Add(ca)]; | |
// Set the data validation type. | |
validation.Type = ValidationType.TextLength; | |
// Set the operator for the data validation. | |
validation.Operator = OperatorType.LessOrEqual; | |
// Set the value or expression associated with the data validation. | |
validation.Formula1 = "5"; | |
// Enable the error. | |
validation.ShowError = true; | |
// Set the validation alert style. | |
validation.AlertStyle = ValidationAlertType.Warning; | |
// Set the title of the data-validation error dialog box. | |
validation.ErrorTitle = "Text Length Error"; | |
// Set the data validation error message. | |
validation.ErrorMessage = " Enter a Valid String"; | |
// Set and enable the data validation input message. | |
validation.InputMessage = "TextLength Validation Type"; | |
validation.IgnoreBlank = true; | |
validation.ShowInput = true; | |
// Set a collection of CellArea which contains the data validation settings. | |
CellArea cellArea; | |
cellArea.StartRow = 0; | |
cellArea.EndRow = 0; | |
cellArea.StartColumn = 1; | |
cellArea.EndColumn = 1; | |
// Add the validation area. | |
validation.AddArea(cellArea); | |
// Save the Excel file. | |
workbook.Save(dataDir + "output.out.xls"); |
Datenvalidierungsregeln
Wenn Datenvalidierungen implementiert sind, kann die Validierung überprüft werden, indem den Zellen unterschiedliche Werte zugewiesen werden.Cell.GetValidationValue kann verwendet werden, um das Validierungsergebnis abzurufen. Das folgende Beispiel demonstriert diese Funktion mit unterschiedlichen Werten. Die Beispieldatei kann zum Testen unter folgendem Link heruntergeladen werden:
sampleDataValidationRules.xlsx
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Instantiate the workbook from sample Excel file | |
Workbook workbook = new Workbook(dataDir+ "sample.xlsx"); | |
// Access the first worksheet | |
Worksheet worksheet = workbook.Worksheets[0]; | |
// Access Cell C1 | |
// Cell C1 has the Decimal Validation applied on it. | |
// It can take only the values Between 10 and 20 | |
Cell cell = worksheet.Cells["C1"]; | |
// Enter 3 inside this cell | |
// Since it is not between 10 and 20, it should fail the validation | |
cell.PutValue(3); | |
// Check if number 3 satisfies the Data Validation rule applied on this cell | |
Console.WriteLine("Is 3 a Valid Value for this Cell: " + cell.GetValidationValue()); | |
// Enter 15 inside this cell | |
// Since it is between 10 and 20, it should succeed the validation | |
cell.PutValue(15); | |
// Check if number 15 satisfies the Data Validation rule applied on this cell | |
Console.WriteLine("Is 15 a Valid Value for this Cell: " + cell.GetValidationValue()); | |
// Enter 30 inside this cell | |
// Since it is not between 10 and 20, it should fail the validation again | |
cell.PutValue(30); | |
// Check if number 30 satisfies the Data Validation rule applied on this cell | |
Console.WriteLine("Is 30 a Valid Value for this Cell: " + cell.GetValidationValue()); |
Überprüfen Sie, ob die Validierung in der Zelle Dropdown ist
Wie wir gesehen haben, gibt es viele Arten von Validierungen, die innerhalb einer Zelle implementiert werden können. Wenn Sie überprüfen möchten, ob die Validierung ein Dropdown-Menü ist oder nicht,Validierung.InCellDropDown Eigenschaft kann verwendet werden, um dies zu testen. Der folgende Beispielcode veranschaulicht die Verwendung dieser Eigenschaft. Eine Beispieldatei zum Testen kann unter folgendem Link heruntergeladen werden:
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
Workbook book = new Workbook(sourceDir + "sampleValidation.xlsx"); | |
Worksheet sheet = book.Worksheets["Sheet1"]; | |
Cells cells = sheet.Cells; | |
Cell a2 = cells["A2"]; | |
Validation va2 = a2.GetValidation(); | |
if (va2.InCellDropDown) | |
{ | |
Console.WriteLine("A2 is a dropdown"); | |
} | |
else | |
{ | |
Console.WriteLine("A2 is NOT a dropdown"); | |
} | |
Cell b2 = cells["B2"]; | |
Validation vb2 = b2.GetValidation(); | |
if (vb2.InCellDropDown) | |
{ | |
Console.WriteLine("B2 is a dropdown"); | |
} | |
else | |
{ | |
Console.WriteLine("B2 is NOT a dropdown"); | |
} | |
Cell c2 = cells["C2"]; | |
Validation vc2 = c2.GetValidation(); | |
if (vc2.InCellDropDown) | |
{ | |
Console.WriteLine("C2 is a dropdown"); | |
} | |
else | |
{ | |
Console.WriteLine("C2 is NOT a dropdown"); | |
} |
CellArea zu vorhandener Validierung hinzufügen
Es kann Fälle geben, in denen Sie hinzufügen möchtenZellbereichzu bestehenValidierung. Wenn Sie hinzufügenZellbereich verwendenValidierung.AddArea(CellArea cellArea), Aspose.Cells überprüft alle bestehenden Bereiche, ob der neue Bereich bereits existiert. Wenn die Datei eine große Anzahl von Validierungen hat, wird die Leistung beeinträchtigt. Um dies zu überwinden, bietet die API dieValidation.AddAreaCellArea cellArea, bool checkIntersection, bool checkEdge) Methode. DascheckKreuzung Der Parameter gibt an, ob die Überschneidung eines bestimmten Bereichs mit bestehenden Validierungsbereichen überprüft werden soll. Einstellen aufFALSCH deaktiviert die Überprüfung anderer Bereiche. DascheckEdge Der Parameter gibt an, ob die angewendeten Bereiche überprüft werden sollen. Wenn der neue Bereich zum Bereich oben links wird, werden die internen Einstellungen neu erstellt. Wenn Sie sicher sind, dass der neue Bereich nicht der obere linke Bereich ist, können Sie diesen Parameter auf setzenFALSCH.
Das folgende Code-Snippet demonstriert die Verwendung vonValidation.AddAreaCellArea cellArea, bool checkIntersection, bool checkEdge) Methode, um neue hinzuzufügenZellbereichzu bestehenValidierung.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// directories | |
string SourceDir = RunExamples.Get_SourceDirectory(); | |
string outputDir = RunExamples.Get_OutputDirectory(); | |
Workbook workbook = new Workbook(SourceDir + "ValidationsSample.xlsx"); | |
// Access first worksheet. | |
Worksheet worksheet = workbook.Worksheets[0]; | |
// Accessing the Validations collection of the worksheet | |
Validation validation = worksheet.Validations[0]; | |
// Create your cell area. | |
CellArea cellArea = CellArea.CreateCellArea("D5", "E7"); | |
// Adding the cell area to Validation | |
validation.AddArea(cellArea, false, false); | |
// Save the output workbook. | |
workbook.Save(outputDir + "ValidationsSample_out.xlsx"); |
Die Quell- und Ausgabe-Excel-Dateien sind als Referenz beigefügt.