2017-02-02 3 views
0

私はPHPからExcelに取り込みたいドロップダウンを持っています。私はその後、私はそれ私もそれは、それはしませんでし役立つだろう望んbraketsを取り除いた文字列$templistimp = implode (", ", $row_temp);にする配列を爆縮$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'), 

配列を呼び出すための私のスクリプトをテストしてみました。 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

リストは次のようにフォーマットする必要があります。

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

が、私はあなただけdatavalidationリストを取り込むために、これだけのリストで単一のエントリが存在します

$row_temp = mysqli_fetch_array($result_temp,MYSQLI_NUM); 

データベースから最初のエントリを読んでいることを示唆していると思います。

MS Excelには、256文字(コンマ区切り文字を含む)に固定されたデータ検証リストのサイズに制限があることに注意してください。あなたのリストが大きくなる可能性がある場合、そのセルの範囲を(非表示のワークシートまたは列におそらく)のセルにデータを格納してから参照することをお勧めします:

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

からリストを提供する制限細胞の範囲は32,767です。

+0

こんにちはマークベイカーあなたがアドバイスしたように私はやろうとし始めました。しかし、あなたが示唆したように、私は第1行からしか読んでいません。これをどのように結論づけてもいいですか?すべての値を取得するためにどのパラメータをチェックすべきかを示します。配列のこのコードはウェブページ上でうまく動作しますが、なんらかの理由でそれほど優れているわけではありません。 – brettg

+0

データベースの結果から最初の行だけを読み取っているとはどういう結論になりますか? mysqli_fetch_array()はクエリ結果セットから1つの結果しか取得しません。各レコードを順番にフェッチしてループを構築し、配列を構築する必要があります –

+0

ありがとうございました。申し訳ありませんが、mysqli_fetchステートメントの詳細を読み終えてください。私はmysqli_fetch_all()を使用して終了しました。 $ objValidation-> setFormula1( 'DropdownSheet!$ A $ 3:$ A $ 200');すべてがうまく働いています。 null値は返されません。あなたの忍耐は非常に高く評価されます。 – brettg

関連する問題