PHPExcel 仅在下拉列表中填充数组中的第一个值

PHPExcel only populating 1st value from array in dropdown

我有一个下拉列表,我想从 php 填充到 excel。我已经测试了调用数组 $sql_temp = "SELECT tempID FROM temp_sensor_specs WHERE statusTYPE ='SPARE'";

的脚本
INSERT INTO `temp_sensor_specs` (`tempId`) VALUES
('T001'),
('T005'),
('T006'),
('T011'),
('T012'),
('T015'),
('T017'),
('T023'),
('T028'),
('T029'),
('T030'),

然后我将数组内爆,使其成为一个字符串 $templistimp = implode (", ", $row_temp); 我还删除了括号,希望这会有所帮助,但没有。 o 我的下拉菜单如下所示:

我想看起来更像它的 html 兄弟,看起来像这样:

这是我使用的代码:

$sql_temp = "SELECT `tempID` FROM `temp_sensor_specs` WHERE `statusTYPE`='SPARE'";
$result_temp = mysqli_query($link, $sql_temp);
$row_temp = mysqli_fetch_array($result_temp,MYSQLI_NUM);
$templistimp = implode (", ", $row_temp);
$templist = str_replace(array( '(', ')' ), '', $templistimp);

//Data Validation list
$objValidation = $objPHPExcel->getActiveSheet()->getCell('B4')->getDataValidation();
$objValidation->setType(PHPExcel_Cell_DataValidation::TYPE_LIST);
$objValidation->setErrorStyle(PHPExcel_Cell_DataValidation::STYLE_INFORMATION);
$objValidation->setAllowBlank(true);
$objValidation->setShowDropDown(true);
$objValidation->setErrorTitle('Input error');
$objValidation->setError('Value is not in list');
$objValidation->setFormula1('"'.$templist.'"');

列表的格式应如下:

$objValidation->setFormula1('"T001,T002,T003"');

但我建议您只读取数据库中的第一个条目

$row_temp = mysqli_fetch_array($result_temp,MYSQLI_NUM);

填充数据验证列表,因此列表中只有一个条目。

请注意,MS Excel 对数据验证列表的大小有限制,固定为 256 个字符(包括逗号分隔符)。如果您的列表可能更大,那么最好将数据存储在单元格中(可能在隐藏的工作表或列中),然后引用该单元格范围:

$objValidation->setFormula1('$D:$D');

提供单元格范围列表时的限制是 32,767 项