遇到的问题:
我们还是先来看手册是怎么说的:
It is important to remember that any string participating in an Excel formula is allowed to be maximum 255 characters (not bytes).
当下拉列表的数据来源过长(more than 255 characters)时,该下拉列表会显示不正确(我遇到的情况是:该下拉列表显示了别的正常的下拉列表的数据来源)。
以下是我的解决办法:
//----------------下拉列表数据来源过长的解决---------------------
//解决下拉框数据来源字串长度过大:将每个来源字串分解到一个空闲的单元格中
$str_list = "item1,item2,item3,......" ;
$str_len = strlen($str_list);
if ($str_len >= 255) {
$str_list_arr = explode(',', $str_list);
if ($str_list_arr) {
foreach ($str_list_arr as $i => $d) {
$c = "P" . ($i+1);
$activeSheet->setCellValue($c,$d);
}
}
$endcell = $c;
$activeSheet->getColumnDimension('P')->setVisible(false);
}
$objValidation2 = $activeSheet->getCell("A1")->getDataValidation();
$objValidation2->setType(PHPExcel_Cell_DataValidation::TYPE_LIST)
->setErrorStyle(PHPExcel_Cell_DataValidation::STYLE_INFORMATION)
->setAllowBlank(true)
->setShowInputMessage(true)
->setShowErrorMessage(true)
->setShowDropDown(true)
->setErrorTitle('输入的值有误')
->setError('您输入的值不在下拉框列表内.')
->setPromptTitle('下拉选择框')
->setPrompt('请从下拉框中选择您需要的值!');
if ($str_len < 255) {
$objValidation2->setFormula1('"' . $str_list . '"');
} else {
$objValidation2->setFormula1("sheet1!P1:{$endcell}");
}
更多问题 及 解决方案 请参考:
php excel 下拉菜单 使用 PHPExcel 遇到的一个问题:下拉列表的数据来源过长时 显示了别的正常的下拉列表的数据来源...