Java APACHE POI中的vlookup表错误中不存在列

Java APACHE POI中的vlookup表错误中不存在列,java,excel,apache-poi,vlookup,excel-tables,Java,Excel,Apache Poi,Vlookup,Excel Tables,我有一个Excel文件,其中包含一张表中的VLOOKUP的命名Excel表格 我试图通过Gender\u lookup表引用另一张表中的VLOOKUP结果。我使用的公式是=VLOOKUP(TRIM(CLEAN([@[Gender]])),Gender_lookup,2,0),它从我表格中的当前行中获取Gender值,并在另一张表格中的Gender_lookup表格中检查相应的Gender值。该公式有效,并在excel中运行 我还提供了所有附件以供参考 我尝试使用XSSFFormulaEvalua

我有一个Excel文件,其中包含一张表中的
VLOOKUP
的命名Excel表格

我试图通过
Gender\u lookup
表引用另一张表中的
VLOOKUP
结果。我使用的公式是
=VLOOKUP(TRIM(CLEAN([@[Gender]])),Gender_lookup,2,0)
,它从我表格中的当前行中获取
Gender
值,并在另一张表格中的
Gender_lookup
表格中检查相应的
Gender
值。该公式有效,并在excel中运行

我还提供了所有附件以供参考

我尝试使用
XSSFFormulaEvaluator.evaluateAllFormulaCells(工作簿)
进行评估,这给了我一个异常:

org.apache.poi.ss.formula.FormulaParseException: The column  doesn't exist in table Gender_lookup
    at org.apache.poi.ss.formula.FormulaParser.parseStructuredReference(FormulaParser.java:821)
    at org.apache.poi.ss.formula.FormulaParser.parseNonRange(FormulaParser.java:908)
    at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:498)
    at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:322)
    at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1548)
    at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1506)
    at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1493)
    at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1867)
    at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1994)
    at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1978)
    at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1935)
    at org.apache.poi.ss.formula.FormulaParser.intersectionExpression(FormulaParser.java:1908)
    at org.apache.poi.ss.formula.FormulaParser.Arguments(FormulaParser.java:1479)
    at org.apache.poi.ss.formula.FormulaParser.function(FormulaParser.java:1352)
    at org.apache.poi.ss.formula.FormulaParser.parseNonRange(FormulaParser.java:905)
    at org.apache.poi.ss.formula.FormulaParser.parseRangeable(FormulaParser.java:498)
    at org.apache.poi.ss.formula.FormulaParser.parseRangeExpression(FormulaParser.java:322)
    at org.apache.poi.ss.formula.FormulaParser.parseSimpleFactor(FormulaParser.java:1548)
    at org.apache.poi.ss.formula.FormulaParser.percentFactor(FormulaParser.java:1506)
    at org.apache.poi.ss.formula.FormulaParser.powerFactor(FormulaParser.java:1493)
    at org.apache.poi.ss.formula.FormulaParser.Term(FormulaParser.java:1867)
    at org.apache.poi.ss.formula.FormulaParser.additiveExpression(FormulaParser.java:1994)
    at org.apache.poi.ss.formula.FormulaParser.concatExpression(FormulaParser.java:1978)
    at org.apache.poi.ss.formula.FormulaParser.comparisonExpression(FormulaParser.java:1935)
    at org.apache.poi.ss.formula.FormulaParser.intersectionExpression(FormulaParser.java:1908)
    at org.apache.poi.ss.formula.FormulaParser.unionExpression(FormulaParser.java:1889)
    at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:2036)
    at org.apache.poi.ss.formula.FormulaParser.parse(FormulaParser.java:170)
    at org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getFormulaTokens(XSSFEvaluationWorkbook.java:85)
    at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:271)
    at org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:216)
    at org.apache.poi.xssf.usermodel.BaseXSSFFormulaEvaluator.evaluateFormulaCellValue(BaseXSSFFormulaEvaluator.java:56)
    at org.apache.poi.ss.formula.BaseFormulaEvaluator.evaluate(BaseFormulaEvaluator.java:110)
    at practcie.Vlookup.main(Vlookup.java:97)

apache poi公式解析器无法将结构化引用
TableName
解析为
TableName[#Data]
的引用。如果公式是
=VLOOKUP(TRIM(CLEAN([@[Gender]]),Gender#u lookup[#Data],2,0)
,那么公式解析器将成功。嗨,阿克塞尔·里克特,当我从apche poi读取公式时,它将其读取为VLOOKUP(TRIM(CLEAN(Member#Data[#This Row],[Gender mod]])),Gender#lookup[],2,0)…这里,Member_data是我编写此公式的行表的名称,而Gender_lookup是第二页中其他表的名称。我在这里没有发现任何错误。你能再一次详细说明一下吗?
ApachePOI
中的一个bug。
Excel
formula
=VLOOKUP(TRIM(CLEAN([@Gender])、Gender\u lookup,2,0)
=VLOOKUP(TRIM(CLEAN(Member\u Data[[此行],[Gender]])、Gender\u lookup[#Data],2,0)
当所有结构化引用都已完全给出且具有列
Gender
的表命名为
Member\u Data
。但是
apache-poi
的公式解析器将
Gender\u lookup
作为
Gender\u lookup[]
而不是
Gender\u lookup[#Data]
。非常感谢Axel,它工作了这么多。但是有没有其他解决方案不通过java在excel中更改公式呢