簡體   English   中英

從不同工作表中的命名列表創建dataValidation

[英]Create dataValidation from named list in different sheet

我正在嘗試創建一個DataValidation對象,其中的List Constraint是一個范圍內的單個連續列的名稱....作為我傳遞給createFormulaListConstraint()的參數的列表與我想要的位置在不同的表中顯示dataValidation。 以下是我到目前為止擁有的代碼,當我嘗試運行它時,發生FormulaParseException:正在拋出當前工作簿中不存在的指定名稱范圍

    Name name = dctmWorkSheet.getWorkbook().createName();
    name.setSheetIndex(1);
    name.setNameName(cell.getStringCellValue());    
    name.setRefersToFormula(getRangeRefersToFormula(valueAssSheet, firstRow, rowIndex, insertCol));

    validationHelper = dctmWorkSheet.getDataValidationHelper();
    //------ THIS IS THE LINE RESPONSIBLE FOR THE EXCEPTION -------
    constraint = validationHelper.createFormulaListConstraint(name.getNameName());
    dataValidation = validationHelper.createValidation(constraint, cral);
    dataValidation.setEmptyCellAllowed(true);
    dataValidation.setShowErrorBox(true);
    dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
    dataValidation.createErrorBox("Error", "Please use Pick List Value");
    dctmWorkSheet.addValidationData(dataValidation);

感謝您的幫助或反饋...

通過在sheetIndex(0)中創建一個附加名稱並將其引用到sheetIndex(1)中的名稱,實際上設法解決了我的問題。以下是根據需要工作的代碼:

    Name name = dctmWorkSheet.getWorkbook().createName();
    name.setSheetIndex(1);
    name.setNameName(cell.getStringCellValue());    
    name.setRefersToFormula(getRangeRefersToFormula(valueAssSheet, firstRow, rowIndex, insertCol));
    Name name2 = dctmWorkSheet.getWorkbook().createName();
    name2.setSheetIndex(0);
    name2.setNameName(name.getNameName());
    name2.setRefersToFormula(name.getRefersToFormula());


    validationHelper = dctmWorkSheet.getDataValidationHelper();
    constraint = validationHelper.createFormulaListConstraint(name2.getNameName());
    dataValidation = validationHelper.createValidation(constraint, cral);
    dataValidation.setEmptyCellAllowed(true);
    dataValidation.setShowErrorBox(true);
    dataValidation.setErrorStyle(DataValidation.ErrorStyle.STOP);
    dataValidation.createErrorBox("Error", "Please use Pick List Value");
    dctmWorkSheet.addValidationData(dataValidation);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM