很抱歉标题堆栈溢出认为主观是荒谬的。
我希望使用EPPlus为从我的应用程序下载的excel文件添加验证。我需要验证来阻止用户在列中输入空格。我已经在列上有基本的验证检查长度,我需要在列中添加额外的验证来检查空格。我已经搞砸了添加自定义并最终尝试了类似这样的东西
var colValidation = codeSheet.DataValidations.AddCustomValidation("A:A");
codeValidation.Formula.ExcelFormula = "=ISERR(FIND(' ',A:A))";
但我没有运气。有没有办法使用RegEx这样做或有人设法做到这一点?
更新:最新代码
var codeValidation = codeSheet.DataValidations.AddCustomValidation("A:A");
codeValidation.ShowErrorMessage = true;
codeValidation.ErrorStyle = ExcelDataValidationWarningStyle.stop;
codeValidation.ErrorTitle = "An invalid value was entered";
codeValidation.Error = "Code must be Unique, between 1 and 8 digits in length and alphanumeric";
codeValidation.Formula.ExcelFormula = "=ISERR(FIND(\" \",A:A))";
//codeValidation.Formula.ExcelFormula = "=ISERR(FIND(\" \"))";
由于 杰夫
答案 0 :(得分:1)
将单引号改为双引号,因为它是您搜索的字符串'space'。记得用EPPLUS的反斜杠来避开双引号。
"=ISERR(FIND(\" \",A:A))";
要验证用户输入长度为1到8个字符且字符串中没有空格的字母数字字符串,请使用此公式:(如编写的那样仅验证单元格A1)
"=(LEN(A1)<9)*((LEN(A1)-LEN(SUBSTITUTE(A1,\" \",\"\")))=0)"
修改强>
要将测试应用于整个列,您需要输入公式作为数组公式。例如,如果将其应用于A列,请为A1编写等式并使用数组公式。如果你在excel中手动输入,你可以按住CTRL + SHIFT,然后在键入公式时按Enter键。
要以编程方式输入数组公式,您需要使用FormulaArray
而不是ExcelFormula
codeValidation
已经指向整个列,所以您只需要:
codeValidation.Formula.FormulaArray = "=ISERROR(FIND(\" \",A1)=FALSE)";
或
codeValidation.Formula.FormulaArray = "=(LEN(A1)<9)*((LEN(A1)-LEN(SUBSTITUTE(A1,\" \",\"\")))=0)";
未经测试,使用EPPLUS