Veri Doğrulama
Veri Doğrulama Türleri ve Uygulama
Veri doğrulama, çalışsayadaki girilen verilere ilişkin kuralların ayarlanabilme yeteneğidir. Örneğin, bir sütunun TARIH olarak etiketlendiğinden emin olmak için doğrulamayı kullanın ve yalnızca tarihlerin bulunduğu veya başka bir sütunda yalnızca sayıların bulunduğundan emin olun. Aynı zamanda BELİRLİ bir tarih aralığında yalnızca tarihlerin bulunduğundan emin olabilirsiniz. Veri doğrulama ile çalışarak, çalışsayadaki hücrelere neyin girileceğini kontrol edebilirsiniz.
Microsoft Excel, çeşitli farklı veri doğrulama türlerini desteklemektedir. Her tür, bir hücre veya hücre aralığına hangi veri türünün girileceğini kontrol etmek için kullanılır. Aşağıda, aşağıdaki durumların doğrulanma şeklini gösteren kod örnekleri bulunmaktadır:
- Sayıların tam olduğunu, yani onların ondalık kısmının olmadığını doğrulama.
- Ondalık sayıların doğru yapısı takip edildiğini doğrulama. Kod örneği, bir hücre aralığının iki ondalık alanı olması gerektiğini tanımlar.
- Değerlerin belirli bir değer listesine sınırlı olduğunu doğrulama. Liste doğrulama, bir hücre veya hücre aralığına uygulanabilen ayrı bir değer listesi tanımlar.
- Tarihlerin belirli bir aralıkta olmasını sağlama.
- Zamanın belirli bir aralıkta olup olmadığını kontrol etme.
- Bir metnin belirli bir karakter uzunluğunda olup olmadığını kontrol etme.
Microsoft Excel ile Veri Doğrulama
Microsoft Excel kullanarak doğrulamalar oluşturmak için:
- Bir çalışsayfada, doğrulama uygulamak istediğiniz hücreleri seçin.
- Data menüsünden Doğrulama seçeneğini seçin. Doğrulama iletişim kutusu görüntülenecektir.
- Ayarlar sekmesine tıklayın ve ayarları girin.
Aspose.Cells ile Veri Doğrulama
Veri doğrulaması, çalışma tablolarına girilen bilgileri doğrulamak için güçlü bir özelliktir. Veri doğrulaması ile geliştiriciler, kullanıcılara bir liste seçeneği sunabilir, veri girişlerini belirli bir tür veya boyuta sınırlayabilir, vb. Aspose.Cells’de, her Worksheet sınıfının bir Validations özelliği vardır. Bu özellik, bir Validation koleksiyonunu temsil eder. Doğrulamayı kurmak için, Validation sınıfının bazı özelliklerini aşağıdaki gibi ayarlayın:
- Tip - ValidationType numaralı sayısal değerlerden birini kullanarak belirtilebilen doğrulama tipini temsil eder.
- Operatör - doğrulamada kullanılacak operatörü temsil eder, bu, OperatorType numaralandırmasındaki önceden tanımlanmış değerlerden birini kullanarak belirtilebilir.
- Formül1 - Doğrulamanın ilk parçasıyla ilişkilendirilen değeri veya ifadeyi temsil eder.
- Formül2 - Doğrulamanın ikinci parçası ile ilişkilendirilen değeri veya ifadeyi temsil eder.
Validation nesnesinin özellikleri yapılandırıldığında, geliştiriciler oluşturulan doğrulamayı kullanarak doğrulanacak hücre aralığı hakkında bilgileri depolamak için CellArea yapısını kullanabilir.
Veri Doğrulama Türleri
ValidationType numaralandırmasının aşağıdaki üyeleri bulunmaktadır:
Üye Adı | Açıklama |
---|---|
AnyValue | Herhangi bir türün bir değeri olarak belirtilir. |
WholeNumber | Tamsayılar için doğrulama türünü belirtir. |
Decimal | Ondalık sayılar için doğrulama türünü belirtir. |
List | Açılır kutu listesi için doğrulama türünü belirtir. |
Date | Tarihler için doğrulama türünü belirtir. |
Time | Zamanlar için doğrulama türünü belirtir. |
TextLength | Metnin uzunluğu için doğrulama türünü belirtir. |
Custom | Özel doğrulama türünü belirtir. |
Tamsayı Veri Doğrulaması
Bu tür doğrulama ile kullanıcılar doğrulanmış hücrelere yalnızca belirli bir aralık içinde tam sayılar girebilirler. Aşağıdaki örnek kodlar, WholeNumber doğrulama türünü uygulamanın nasıl yapılacağını göstermektedir. Örnek, Aspose.Cells kullanılarak Microsoft Excel ile yukarıda oluşturduğumuz aynı veri doğrulamasını oluşturur.
// 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"); |
Liste Veri Doğrulaması
Bu tür doğrulama, kullanıcının bir açılır kutu listesinden değerler girmesine izin verir. Bu, veri içeren bir dizi satırın bir listesini sağlar. Örnekte, listedeki kaynağı tutmak için ikinci bir çalışma tablosu eklenir. Kullanıcılar yalnızca listeden değer seçebilir. Doğrulama alanı, birinci çalışma tablosundaki A1:A5 hücre aralığıdır.
Burada önemli olan nokta, Validation.InCellDropDown özelliğini true olarak ayarlamanızdır.
// 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"); |
Tarih Veri Doğrulaması
Bu tür doğrulama ile, kullanıcılar belirli bir aralıkta veya belirli kriterlere uyan tarih değerlerini doğrulanmış hücrelere girerler. Örnekte, kullanıcının 1970 ila 1999 arasında tarih girmesi kısıtlanmıştır. Burada doğrulama alanı B1 hücresidir.
// 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"); |
Zaman Veri Doğrulaması
Bu tür doğrulama ile, kullanıcılar belirli bir aralıkta veya belirli kriterlere uyan saatleri doğrulanmış hücrelere girebilirler. Örnekte, kullanıcının 09:00 ile 11:30 arasında zaman girmesi kısıtlanmıştır. Burada doğrulama alanı B1 hücresidir.
// 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"); |
Metin Uzunluğu Veri Doğrulaması
Bu tür doğrulama ile kullanıcılar, doğrulanan hücrelere belirli bir uzunluktaki metin değerlerini girebilirler. Örnekte, kullanıcıya en fazla 5 karakter içeren dize değerlerini girmesi engellenir. Doğrulama alanı B1 hücresidir.
// 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"); |
Veri Doğrulama Kuralları
Veri doğrulamaları uygulandığında, doğrulamanın farklı hücrelere farklı değerler atayarak kontrol edilebilir. Doğrulama sonucunu almak için Cell.GetValidationValue kullanılabilir. Aşağıdaki örnek bu özelliği farklı değerlerle göstermektedir. Test için örnek dosya aşağıdaki bağlantıdan indirilebilir:
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()); |
Hücrede doğrulamanın açılır menü olup olmadığını kontrol et
Gördüğümüz gibi bir hücre içinde uygulanabilecek birçok doğrulama türü bulunmaktadır. Doğrulamanın açılır menü olup olmadığını kontrol etmek istiyorsanız, Validation.InCellDropDown özelliği bunu test etmek için kullanılabilir. Aşağıdaki örnek kod, bu özelliğin kullanımını göstermektedir. Test için örnek bir dosyayı aşağıdaki bağlantıdan indirebilirsiniz:
// 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"); | |
} |
Mevcut Doğrulama Alanına Hücre Alanı Ekle
Mevcut Validation‘e CellArea eklemek isteyebileceğiniz durumlar olabilir. Yeni alanı eklerken Validation.AddArea(CellArea cellArea) kullanarak CellArea eklerseniz, Aspose.Cells, yeni alanın zaten var olup olmadığını kontrol etmek için tüm mevcut alanları kontrol eder. Dosyada çok sayıda doğrulama varsa, bu performansı olumsuz etkiler. Bunu aşmak için API, Validation.AddAreaCellArea cellArea, bool checkIntersection, bool checkEdge) yöntemini sağlar. checkIntersection parametresi, verilen alanın mevcut doğrulama alanlarıyla kesişimini kontrol edip etmeyeceğini belirtir. false ayarlamak diğer alanların kontrolünü devre dışı bırakır. checkEdge parametresi, uygulanan alanların kontrol edilip edilmeyeceğini belirtir. Yeni alanın sol üst alan olması durumunda iç ayarlar yeniden oluşturulur. Yeni alanın sol üst alan olmadığından eminseniz, bu parametreyi false olarak ayarlayabilirsiniz.
Aşağıdaki kod örneği, mevcut Validation‘e yeni CellArea eklemek için Validation.AddAreaCellArea cellArea, bool checkIntersection, bool checkEdge) yönteminin kullanımını göstermektedir.
// 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"); |
Kaynak ve çıktı excel dosyaları referans için ekte sunulmuştur.