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

时间:2017-08-18 10:29:08

标签: 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' - > '名称经理'显示有效名称+' loopCounter值'但参考值为' =#NA!'

1 个答案:

答案 0 :(得分:3)

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

当名称为Global(无表格参考)时,"当前"在OpenOffice组织中假定工作表(当前对名称的引用)。 MS Excel 2007+不会这样做。它需要工作表参考(Sheet1!name)

您的代码应该是这样的。

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