在POI中指定公式string中的文件path

林新的POI,我有要求search一个给定的string列表在两个不同的Excel表中将有一个或多个searchstring的发生。

现在,即时通讯使用Cell迭代器遍历所有行来searchstring,

for (String searchString : SearchList){ List<Row> matchedRows = getMatchedRows(searchString); 

}

 public List<Row> getMatchedRows(String searchString) List<Row> rowsMatched = new ArrayList(); (Row rowOfSheet : workSheet) { if(rowOfSheet.getCell(index).getStringCellValue().equalsIgnoreCase(searchString)) { rowsMatched.add(rowOfSheet) } } } 

但性能会受到影响,因为我在ExcelSheet以及searchList中有巨大的logging。 所以我试图使用“匹配”公式获得使用评估器匹配行的索引,但我不能gt正确的语法,当我尝试执行以下操作:

  "MATCH('C:\\Files\\[File1.xlsx]sheet1'!$A$2,'C:\\Files\\[File2.xlsx]sheet2'!$B$2:$B$741,0)" 

这给了我以下例外:

  Exception in thread "main" java.lang.IllegalArgumentException: Invalid sheetIndex: -1. at org.apache.poi.ss.formula.SheetRefEvaluator.<init>(SheetRefEvaluator.java:39) at org.apache.poi.ss.formula.OperationEvaluationContext.createExternSheetRefEvaluator(OperationEvaluationContext.java:97) at org.apache.poi.ss.formula.OperationEvaluationContext.getRef3DEval(OperationEvaluationContext.java:249) at org.apache.poi.ss.formula.WorkbookEvaluator.getEvalForPtg(WorkbookEvaluator.java:656) at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateFormula(WorkbookEvaluator.java:527) at org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:288) 

如何在公式string中指定完整文件path。 我refrred以下bt这不是为我工作。

  http://stackoverflow.com/questions/10915475/java-poi-xssf-formulaevaluator 

如何解决这个问题。 任何build议和解决scheme都很有帮助。 提前致谢。 请尽快提供一些解决scheme。