Java APACHE POI中的vlookup表错误中不存在列
我有一个Excel文件,其中包含一张表中的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
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中更改公式呢