java - 在此工作簿中检测到一个或多个无效名称。这些无效名称已更改为#REF

标签 java excel apache-poi openoffice-calc

尝试将单元格('CD')中的值引用到特定单元格,在 OpenOffice 中工作正常但不适用于 ms excel

for () {
        Name houseHoldRelationNamedCell = workbook.createName();
                houseHoldRelationNamedCell.setNameName("name"+ loopCounter);
        houseHoldRelationNamedCell.setRefersToFormula("$"+ CellReference.convertNumToColString(hiddenCellColumn) +"$1");

    DVConstraint constraintHouseholdRltn = DVConstraint.createFormulaListConstraint("name"+ beneficiaryRelationVO.getId());
    CellRangeAddressList addressListHouseholdRltn = new CellRangeAddressList(row, totalRows, column-1, column-1);
    HSSFDataValidation validationHouseholdRltn = new HSSFDataValidation(addressListHouseholdRltn, constraintHouseholdRltn);
    validationHouseholdRltn.setSuppressDropDownArrow(false);
    sheet.addValidationData(validationHouseholdRltn);
loopCounter++;
}

Excel 错误:“在此工作簿中检测到一个或多个无效名称。这些无效名称已更改为 #REF!”

在 ms excel 'Formulas' -> 'Name Manager' 中显示有效名称+'loopCounter value' 但引用值为 '=#NA!'

最佳答案

通过查看您的代码。我发现当您引用单元格时,您只使用了 $CD1$(CD 是没有工作表名称的示例单元格地址)。

当名称为 Global(无工作表引用)时,OpenOffice Org 中假定为“当前”工作表(名称引用的当前)。 MS Excel 2007+ 不会这样做。它需要工作表引用 (Sheet1!name)

你的代码应该是这样的。

houseHoldRelationNamedCell.setRefersToFormula("'sheetname'!$"+ CellReference.convertNumToColString(hiddenCellColumn) +"$1");

关于java - 在此工作簿中检测到一个或多个无效名称。这些无效名称已更改为#REF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45754449/

相关文章:

excel - 如何从excel文件中读取数据并显示在我的 View 中?

java - 将 Ms Access 连接到 java

java - Apache POI 在电子表格中仅记录 1 行

java - 如何使用 JButton 为 ActionEvent 创建 If 语句

excel - 获得得分最高的前五名学生

java - 多次按下键盘

javascript - 搜索 HREF 链接会拉回不正确的链接

java - 用样式写入word文档

java - 方法引用导致原始类型编译器警告,但 lambda 不会

java - enum.ValueOf 需要完全限定路径吗?