Apache POI:如何将单元格公式设置为另一个工作表的名称?

时间:2020-07-03 12:34:40

标签: excel apache-poi named-ranges

我做错了吗,或者这是POI的错误/限制?

我得到FormulaParseException: Cell reference expected after sheet name at index 8

它在没有工作表限定符的情况下有效,但是如果复制粘贴到另一张工作表,则该公式将不起作用。

我需要工作表作用域的名称,因为多个工作表定义了相同的名称。

  File file = new File(System.getProperty("user.home"), "Desktop/Test.xlsx");
  Workbook workbook = new XSSFWorkbook();
  Sheet sheet = workbook.createSheet("Sheet1");
  Name name = workbook.createName();
  name.setNameName("NameForA1");
  name.setSheetIndex(workbook.getSheetIndex(sheet));
  name.setRefersToFormula("'Sheet1'!$A$1:$A$1");
  Row row = sheet.createRow(0);
  row.createCell(0).setCellValue("This is A1");
  Cell b1 = row.createCell(1);
  //      b1.setCellFormula("'Sheet1'!NameForA1"); // throws exception
  b1.setCellFormula("Sheet1!NameForA1"); // throws exception
  //      b1.setCellFormula("NameForA1"); // works
  workbook.write(new FileOutputStream(file));
  Desktop.getDesktop().open(file);

screenshot

但是我需要:

screenshot2

1 个答案:

答案 0 :(得分:1)

抱歉,是3.10.x中的错误。在3.17版本中可用。

留下问题。也许这个例子对某人有用。