我正在尝试使用 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));
但它也显示了相同的结果。我错过了什么。
答案 0 :(得分:1)
$objValidation->setFormula1('worksheetName!$A$1:$A$3');
应该有效,如PHPExcel Docs中所述并在Examples
文件夹中的示例15datavalidation.php和15datavalidation-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。
我建议的是确保您在公式中的正确工作表上引用正确的单元格范围