2017-02-02 55 views
0

我有一個下拉列表,我想從php中填充excel。我測試過我的腳本調用數組$sql_temp = "SELECT tempID FROM temp_sensor_specs WHERE statusTYPE ='SPARE'";PHPExcel只在下拉列表中填充數組的第一個值

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

然後我崩盤的陣列,使之成爲字符串$templistimp = implode (", ", $row_temp);我也去掉了brakets希望會有所幫助,它沒有。 Ø我的下拉是這樣的:

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

該列表應格式化爲:

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

,但我建議你只是從數據庫

$row_temp = mysqli_fetch_array($result_temp,MYSQLI_NUM); 

閱讀的第一個條目來填充資料驗證列表,這樣只會出現在列表中單個條目。

請注意,MS Excel對datavalidation列表的大小有一個限制,該列表固定爲256個字符(包括逗號分隔符)。如果您的列表很可能是更大的,那麼最好是(可能在一個隱藏的工作表或列)存儲單元中的數據,然後引用單元格範圍:

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

提供從列表中時,限制細胞的範圍是32,767項

+0

嗨@Mark Ba​​ker我開始嘗試按照你的建議去做。但正如你所建議的,我只是從第一行開始閱讀。請問你是如何得出這個結論的?以及我應該檢查哪些參數以獲取所有值。這個數組的代碼在網頁上運行良好,但由於某種原因,不太適用於Excel。 – brettg

+0

我如何得出結論:您只是從數據庫結果中讀取第一行? 'mysqli_fetch_array()'只會從您的查詢結果集中獲取單個結果;您需要依次循環讀取每條記錄,構建您的數組 –

+0

感謝Mark,對不起,我應該在第一個mysqli_fetch語句上做更多的閱讀。我結束了使用mysqli_fetch_all()。一切工作正常,獎金$ objValidation-> setFormula1('DropdownSheet!$ A $ 3:$ A $ 200');將不會返回任何空值。你的耐心非常感謝。 – brettg

相關問題