PHPExcel如何使用setFormula1()将命名范围链接到单元格下拉列表

时间:2016-04-26 13:40:25

标签: php phpexcel

嗨伙计们我正在使用PHPExcel。我如何将下拉单元格链接到不同工作表中的命名范围列以前我已将此单元格链接到此下拉列表 $ objValidation-> setFormula1( 'DropDownSheet $ A $ 1:$ A $ 10'); DropDownSheet是工作表名称。 但现在我有一个命名范围countries_list我想用下拉列表使用setFormula1()如何做到这一点我试过这个 $ objValidation-> setFormula1( '= countries_list'); $ objValidation-> setFormula1( 'countries_list'); 但它不起作用。

1 个答案:

答案 0 :(得分:0)

马克·贝克是正确的,这里我的代码工作正常...首先,在一个循环中,我在第2页的A列中设置了一个国家列表...在循环中迭代了$ counter :

$data_sheet = $objPHPExcel->createSheet();
$data_sheet->setTitle('Data');
$data_sheet->getCell('A'.$counter)->setValue($country["name"]);

然后我将该列命名为“国家/地区”:

$objPHPExcel->addNamedRange( 
    new PHPExcel_NamedRange(
        'countries', 
        $objPHPExcel->getSheet(1), 
        'A1:A'.($counter-1),
        false,
        NULL
    ) 
);

然后我想在整个L列的表1中找到一个下拉列表(好吧,对于前1000行):

for($row = 2; $row<1002; $row++) {
    $objValidation = $objPHPExcel->getActiveSheet()->getCell("L".$row)->getDataValidation();
    $objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
    $objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION );
    $objValidation->setAllowBlank(false);
    $objValidation->setShowInputMessage(true);
    $objValidation->setShowErrorMessage(true);
    $objValidation->setShowDropDown(true);
    $objValidation->setErrorTitle('Input error');
    $objValidation->setError('Value is not in list.');
    $objValidation->setPromptTitle('Pick from list');
    $objValidation->setPrompt('Please pick a value from the drop-down list.');
    $objValidation->setFormula1('countries');
}

最后一行命名我在前一个代码块中命名的列表。