在java中使用apache poi读取外部工作​​表

时间:2014-02-04 15:56:51

标签: java excel

我正在尝试创建一个具有名称的excel。我需要执行一个需要引用外部工作表的公式。

String formula = "=VLOOKUP(A2,[asd.xlsx]Sheet1!B$2:L$2045,11,0)";

               System.out.println("formula: "+formula);
               cell1.setCellFormula(formula);

当我执行此操作时,我得到以下异常。

java.lang.RuntimeException: not implemented yet
    at org.apache.poi.xssf.usermodel.XSSFEvaluationWorkbook.getExternalSheetIndex(XSSFEvaluationWorkbook.java:127)
    at org.apache.poi.ss.formula.FormulaParser.createAreaRefParseNode(FormulaParser.java:615)

我尝试使用INDIRECT函数,将该公式设置为文本并执行INDIRECT,但它不起作用。我错过了什么吗?

感谢。

更新1:

感谢您的评论。我没有使用XSSFEEvaluationWorkbook。我的代码在

之下
       FileInputStream abc = new FileInputStream(new File("Z_abc.xlsx"));
        XSSFWorkbook workbookabc = new XSSFWorkbook(abc);
        XSSFSheet sheetabc = workbookabc.getSheetAt(0);

        Iterator<Row> rowIteratorRead = sheetabc.iterator();

        while (rowIteratorRead.hasNext())
        {
            Row rowRead = rowIteratorRead.next();

            if(rowRead.getRowNum()==0){
                continue;
            }//if(row.getRowNum()==0){


            Cell cell = rowRead.getCell(0);


            Cell cell1 =  rowRead.getCell(1); //////////////////////////
            if(cell1 == null) {
               cell1 =rowRead.createCell(1);

               int rowNumber = (rowRead.getRowNum()+1);

               String formula = "VLOOKUP(A2,[asd.xlsx]Sheet1!B$2:L$2045,11,0)";

               //System.out.println("formula: "+formula);
               cell1.setCellFormula(formula);
               //cell1.setCellValue(formula);

            }//if(cell1 == null) {  

        }//while (rowIteratorRead.hasNext())

如果他们在不使用XSSFEEvaluationWorkbook的情况下从相同的工作簿中引用,我就成功地使公式有效。

感谢。

0 个答案:

没有答案