我正在尝试使用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));
但它也显示出相同的结果。所以我错过了什么。
$objValidation->setFormula1('worksheetName!$A$1:$A$3');
应该可以工作,如 PHPExcel 文档中所述,并在示例 15datavalidation.php 和 15datavalidation-xls 中演示.php在Examples
文件夹中
应该使用命名范围,并且在使用大陆和国家/地区的 Example 文件夹中的文件39dropdown.php
中有一个示例
$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 编写器。
我所能建议的是确保您在公式中的正确工作表上引用了正确的单元格范围