在下拉列表中显示国家/地区列表PHPExcel

时间:2017-08-23 06:47:14

标签: php excel phpexcel phpspreadsheet

我正在尝试使用 PHPExcel 创建一个excel文件。我想在一列中显示国家/地区下拉列表,以便用户可以选择国家/地区,然后将其与其他数据一起上传。

现在要在excel文件中创建一个下拉列表,我们可以使用如下的数据验证

$objValidation = $objPHPExcel->getActiveSheet()->getCell('N' . $i)->getDataValidation();
$objValidation->setType(PHPExcel_Cell_DataValidation::TYPE_LIST);
$objValidation->setFormula1('"male,female"');

但我认为它有256个字符的限制,国家列表肯定大于此限制。当我创建我的excel文件时,如上所述下拉,但我的国家/地区下拉列表显示空下拉列表。

我尝试使用命名范围

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

$objValidation->setFormula1('countries');

也试过这些

$objValidation->setFormula1('=countries');

$objValidation->setFormula1('countries!A1:A'.($counter-1));

但它也显示了相同的结果。我错过了什么。

1 个答案:

答案 0 :(得分:1)

$objValidation->setFormula1('worksheetName!$A$1:$A$3');

应该有效,如PHPExcel Docs中所述并在Examples文件夹中的示例15datavalidation.php15datavalidation-xls.php中进行了演示

应该使用命名范围,并且使用大陆和国家/地区的file 39dropdown.php in the Examples folder中有一个示例

$objPHPExcel->addNamedRange(
    new PHPExcel_NamedRange(
        'Continents', 
        $objPHPExcel->getActiveSheet(), $continentColumn . '1:' . $continentColumn . ($key+1)
    )
);


$objValidation = $objPHPExcel->getActiveSheet()
    ->getCell('B1')
    ->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST )
    ->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION )
    ->setAllowBlank(false)
    ->setShowInputMessage(true)
    ->setShowErrorMessage(true)
    ->setShowDropDown(true)
    ->setErrorTitle('Input error')
    ->setError('Continent is not in the list.')
    ->setPromptTitle('Pick from the list')
    ->setPrompt('Please pick a continent from the drop-down list.')
    ->setFormula1('=Continents');

所有这些示例都没有问题(尽管链接下拉列表不适用于Excel5 Writer。

我建议的是确保您在公式中的正确工作表上引用正确的单元格范围

相关问题