excelvalidation规则使用vb.net使用spreadsheetgear

我想添加validation规则来dynamic使用VB.Net,我可以使用电子表格添加datevalidation到一个单元格如下

worksheet.Range(DateRange).Validation.Add(ValidationType.Date, ValidationAlertStyle.Stop, ValidationOperator.Greater, dt, Nothing) worksheet.Range(DateRange).NumberFormat = "mm/dd/yyyy" 

以同样的方式,如何使单元格的validation规则只接受单个字符“x”和“X”。提前感谢。

使用ValidationType.List将input限制为“x,X”

您可以使用ValidationType .List枚举选项来完成此操作。 例:

 worksheet.Range(SomeRange).Validation.Add(ValidationType.List, ValidationAlertStyle.Stop, ValidationOperator.Default, "x,X", Nothing) 

将input限制为“x,X”而不使用ValidationType.List

当选中单元格时, ValidationType .List枚举选项将始终显示下拉列表。 如果您不希望显示此下拉菜单,则需要通过提供自定义公式来进行validation( ValidationType .Custom)来采取其他方法,这可能需要一点努力才能正常工作,因为您负责validationSomeRange每个单元格的SomeRange

下面是一个通用的方法来解决这个问题(注意,我使用的实际公式只是完成任务的一种方法…任何其他公式都可以用来做同样的事情):

 ' Get IRange representing your SomeRange string (say, "A1:B5"). Dim MyRange As IRange = worksheet.Range(SomeRange) ' Get (relative-referenced) address of top-left cell for SomeRange (A1 in this case). ' We need to use this cell address in the formula to validate input. This approach ' will still work fine if "SomeRange" is a single cell instead of a multi-cell reference. Dim TopLeftCell As String = MyRange(0, 0).GetAddress(False, False, ReferenceStyle.A1.A1, False, Nothing) ' Put together a "validation formula" (ie, =LOWER(A1)="x"). Dim ValidationFormula = String.Format("=LOWER({0})=""x""", TopLeftCell) ' Create validation for all cells in MyRange (A1:B5 in this example), using the ' ValidationFormula as the basis for this validation. MyRange.Validation.Add(ValidationType.Custom, ValidationAlertStyle.Stop, ValidationOperator.Default, ValidationFormula, Nothing)