0
votes

I am generating excel sheet using apache poi for email --that means after generating excel if user enter email in the cell i need to validate that email

below is my code

DVConstraint EmailConstraint=null;
DataValidation EmaildataValidation =null;

EmailConstraint=DVConstraint.createCustomFormulaConstraint("AND(FIND("+'@'+",$A$2),FIND(.,$A$2),ISERROR(FIND( ,$A$2)))");---->getting error here only

EmaildataValidation =dataValidationHelper.createValidation(EmailConstraint, addressList1);
       EmaildataValidation.setSuppressDropDownArrow(false);
       sheet.addValidationData(EmaildataValidation);

when i execute this method i am getting following error

Stacktrace:] with root cause
org.apache.poi.ss.formula.FormulaParseException: Parse error near char 9 '@' in specified formula 'AND(FIND(@,$A$2),FIND(.,$A$2),ISERROR(FIND( ,$A$2)))'. Expected cell ref or constant literal
    at org.apache.poi.ss.formula.FormulaParser.expected(FormulaParser.java:188)
    at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1128)
    at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1083)
    at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1070)
    at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1430)
    at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1530)
    at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1514)
    at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1471)
    at org.apache.poi.ss.formula.FormulaParser.Arguments(FormulaParser.java:1056)
    at org.apache.poi.ss.formula.FormulaParser.function(FormulaParser.java:943)
    at org.apache.poi.ss.formula.FormulaParser.parseNonRange(FormulaParser.java:536)
    at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:416)
    at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:237)
    at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1123)
    at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1083)
    at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1070)
    at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1430)
    at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1530)
    at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1514)
    at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1471)
    at org.apache.poi.ss.formula.FormulaParser.Arguments(FormulaParser.java:1056)
    at org.apache.poi.ss.formula.FormulaParser.function(FormulaParser.java:943)
    at org.apache.poi.ss.formula.FormulaParser.parseNonRange(FormulaParser.java:536)
    at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:416)
    at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:237)
    at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1123)
    at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1083)
    at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1070)

I tried a lot but not able do it.

1
i Edited River please check it or tell me where you not understand please help me River please....girish kumar
Sorry I know nothing about apache. But now it's formatted nicely so other people can try to help you out and can actually see your code =)River
Thank You River , Any body please help me mainly with that formulagirish kumar
Don't you need to quote the @ sign in the formula?Gagravarr

1 Answers

2
votes

First parameter to find function is string hence it must be quoted. Find("@",.. In java you can use escape string character in between formula.