Apache POI:如何将单元格公式设置为另一个 sheet 的名称?
Apache POI: how to set cell formula to a name of another sheet?
我做错了吗,或者这是 POI 的错误/限制?
我得到 FormulaParseException: Cell reference expected after sheet name at index 8
。
它可以在没有 sheet 限定符的情况下工作,但是如果复制粘贴到另一个 sheet。
,则公式将不起作用
我需要 sheet 范围的名称,因为多个 sheet 定义了相同的名称。
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:$A");
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);
但我需要:
抱歉,这是 3.10.x 中的错误。适用于 3.17。
留下问题。也许这个例子对某人有用。
我做错了吗,或者这是 POI 的错误/限制?
我得到 FormulaParseException: Cell reference expected after sheet name at index 8
。
它可以在没有 sheet 限定符的情况下工作,但是如果复制粘贴到另一个 sheet。
,则公式将不起作用我需要 sheet 范围的名称,因为多个 sheet 定义了相同的名称。
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:$A");
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);
但我需要:
抱歉,这是 3.10.x 中的错误。适用于 3.17。
留下问题。也许这个例子对某人有用。