如何增加单元格字符限制 PHPExcel TYPE LIST

How to increase cell character limit PHPExcel TYPE LIST

使用 PHPExcel 创建下拉列表,如下所示:

$objValidation = $objPHPExcel->getActiveSheet()->getCell("A".$i)->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.');
$formulaString = '"' .  implode(", ", $items_array) . '"';
$objValidation->setFormula1($formulaString);

$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
$filename = "MyExcel.xlsx";
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');

问题是它在 1023 个字符处被截断,因此破坏了 "dropdown" 函数。

如何增加字符数限制?

正如评论中所讨论的,数据验证中静态列表的长度是有限制的。

您应该将验证数据放在工作簿某处的某个范围内,并提供此范围进行验证:

// Get options from another sheet
$objvalidation->setFormula1('ExampleSheet!A1:A100');