ワークシートでの検証と操作
検証モード
Aspose.Cells.GridDesktopでサポートされている3つの検証モードは次のとおりです:
- 必須検証モード
- 正規表現検証モード
- カスタム検証モード
必須検証モード
この検証モードでは、指定されたセルに値を入力することが制限されます。必須検証をワークシートセルに適用すると、そのセルに値を入力することが必須となります。
正規表現検証モード
このモードでは、ワークシートセルに対して特定の形式でデータを入力するための制限が適用されます。データの形式のパターンは、正規表現形式で提供されます。
カスタム検証モード
カスタム検証を使用するには、Aspose.Cells.GridDesktop.ICustomValidation インターフェースを実装する必要があります。このインターフェースはValidateメソッドを提供します。このメソッドはデータが有効な場合にはtrueを返し、そうでない場合にはfalseを返します。
Aspose.Cells.GridDesktopでの検証の操作
検証の追加
ワークシートセルに任意の検証を追加するには、以下の手順に従ってください:
- Aspose.Cells.GridDesktop コントロールを Form に追加します
- 任意の Worksheet にアクセスします
- WorksheetのValidationsコレクションに任意の検証を追加して、どの検証をどのセルに適用するかを指定します
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing first worksheet of the Grid | |
Worksheet sheet = gridDesktop1.Worksheets[0]; | |
// Adding values to specific cells of the worksheet | |
sheet.Cells["a2"].Value = "Required"; | |
sheet.Cells["a4"].Value = "100"; | |
sheet.Cells["a6"].Value = "2006-07-21"; | |
sheet.Cells["a8"].Value = "101.2"; | |
// Adding Is Required Validation to a cell | |
sheet.Validations.Add("a2", true, ""); | |
// Adding simple Regular Expression Validation to a cell | |
sheet.Validations.Add("a4", true, @"\d+"); | |
// Adding complex Regular Expression Validation to a cell | |
sheet.Validations.Add("a6", true, @"\d{4}-\d{2}-\d{2}"); | |
// Adding Custom Validation to a cell | |
sheet.Validations.Add("a8", new CustomValidation()); |
ICustomValidationの実装
上記のコードスニペットでは、A8 セルにカスタム検証を追加しましたが、まだそのカスタム検証を実装していません。このトピックの冒頭で説明したように、カスタム検証を適用するには、ICustomValidation インターフェイスを実装する必要があります。それでは、ICustomValidation インターフェイスを実装するクラスを作成してみましょう。
以下のコードスニペットでは、カスタム検証を実装して、以下のチェックを実行します:
- 検証が追加されたセルのアドレスが正確かどうかをチェックする
- セルの値のデータ型が倍精度浮動小数点数かどうかをチェックする
- セルの値が100より大きいかどうかをチェックする
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Implementing ICustomValidation interface | |
public class CustomValidation : Aspose.Cells.GridDesktop.ICustomValidation | |
{ | |
// Implementing Validate method already defined in the interface | |
public bool Validate(Worksheet worksheet, int row, int col, object value) | |
{ | |
// Checking the cell's address | |
if (row == 7 && col == 0) | |
{ | |
//Checking the data type of cell's value | |
double d = 0; | |
try | |
{ | |
d = (double)value; | |
} | |
catch | |
{ | |
return false; | |
} | |
// Checking if the cell's value is greater than 100 | |
if (d > 100) | |
return true; | |
} | |
return false; | |
} | |
} |
検証へのアクセス
特定のワークシートセルに検証が追加された後、開発者が実行時に特定の検証の属性にアクセスして変更する必要がある場合があります。そのような場合、Aspose.Cells.GridDesktop は開発者がこのタスクを簡単に達成できるようにしました。
特定の検証にアクセスするには、以下の手順に従ってください:
- 希望の Worksheet にアクセス
- 検証が適用されたセル名を指定してワークシート内の特定の Validation にアクセス
- 必要に応じて Validation 属性を編集
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing first worksheet of the Grid | |
Worksheet sheet = gridDesktop1.Worksheets[0]; | |
if (sheet.Validations.Count > 0) | |
{ | |
// Accessing the Validation object applied on "a8" cell | |
Aspose.Cells.GridDesktop.Data.GridValidation validation = sheet.Validations[7, 0]; | |
// Editing the attributes of Validation | |
validation.IsRequired = true; | |
validation.RegEx = ""; | |
validation.CustomValidation = null; | |
MessageBox.Show("Validation has been edited after accessing it."); | |
} | |
else | |
{ | |
MessageBox.Show("No validations found to access."); | |
} |
検証の削除
ワークシートから特定の検証を削除するには、以下の手順に従ってください:
- 希望の Worksheet にアクセス
- 検証が適用されたセル名を指定してワークシートから特定の Validation を削除
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing first worksheet of the Grid | |
Worksheet sheet = gridDesktop1.Worksheets[0]; | |
if (sheet.Validations.Count > 0) | |
{ | |
// Removing the Validation object applied on "a6" cell | |
sheet.Validations.RemoveAt(1); | |
MessageBox.Show("Validation has been removed."); | |
} | |
else | |
{ | |
MessageBox.Show("No validations found to remove."); | |
} |