2013-04-22 40 views
4

我正在使用PHPExcel生成模板Excel文檔供用戶下載,以便他們上傳批量數據。PHPExcel設置列上的默認下拉選項

作爲其中的一部分,我希望某些字段是下拉選項。

的資料驗證示例演示如何爲單個細胞做法如下:

$objValidation = $objPHPExcel->getActiveSheet()->getCell('B5')->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.'); 
$objValidation->setFormula1('"Item A,Item B,Item C"'); // Make sure to put the list items between " and " !!! 

這是罰款單個細胞,但我想在B列的所有細胞中的下拉列表中,當新的數據行是添加。我怎樣才能做到這一點?

謝謝

回答

1

我知道這是一個非常晚的答覆。但是,以防萬一。

使用循環(的foreach /對)

循環

$i = 2; 
foreach(...){ 
    $objValidation = $objPHPExcel->getActiveSheet()->getCell('B'.$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.'); 
    $objValidation->setFormula1('"Item A,Item B,Item C"'); 

    $i++; 
} 

這將做你想要的內部。

+0

這是行不通的:$ objValidation-> setFormula1(''Item A,Item B,Item C''),是否有任何更改用空格添加值? – consigliere 2017-05-13 02:09:09

2

你可以嘗試下面的代碼:你的開始單元格沒有$ i = 3你可以改變這個值,$ i < = 250循環區域。

for ($i = 3; $i <= 250; $i++) 
{ 
    $objValidation2 = $objPHPExcel->getActiveSheet()->getCell('N' . $i)->getDataValidation(); 
    $objValidation2->setType(PHPExcel_Cell_DataValidation::TYPE_LIST); 
    $objValidation2->setErrorStyle(PHPExcel_Cell_DataValidation::STYLE_INFORMATION); 
    $objValidation2->setAllowBlank(false); 
    $objValidation2->setShowInputMessage(true); 
    $objValidation2->setShowDropDown(true); 
    $objValidation2->setPromptTitle('Pick from list'); 
    $objValidation2->setPrompt('Please pick a value from the drop-down list.'); 
    $objValidation2->setErrorTitle('Input error'); 
    $objValidation2->setError('Value is not in list'); 
    $objValidation2->setFormula1('"male,female"'); 
} 
1

來自官方的文檔:

如果您需要在多個小區上數據驗證,一個可以克隆 規則集:

$objPHPExcel->getActiveSheet()->getCell('B8')->setDataValidation(clone 
$objValidation); 

但是,仍然在2015年有結束沒有「每區域」的方式來設置這一點。