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

时间:2017-02-02 16:47:12

标签: php arrays phpexcel

我有一个下拉列表我想在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我的下拉列表如下:

enter image description here

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

enter image description here

以下是我正在使用的代码:

$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.'"');

1 个答案:

答案 0 :(得分:1)

列表的格式应为:

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

但我建议你只是从数据库中读取第一个条目

$row_temp = mysqli_fetch_array($result_temp,MYSQLI_NUM);

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

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

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

从一系列单元格提供列表时的限制是32,767项