2013-10-17 21 views
1

我尝试下面的代码上设置验证了PhpExcel如何强制评估PHP的Excel验证式

const VALIDATION = '"=Sheet3!$B$2:$B$21"'; 

$objValidation = $activeSheet->getCell($cellAddress)->getDataValidation(); 
$objValidation->setType(PHPExcel_Cell_DataValidation::TYPE_LIST); 
$objValidation->setErrorStyle(PHPExcel_Cell_DataValidation::STYLE_INFORMATION); 
$objValidation->setAllowBlank(true); 
$objValidation->setShowDropDown(true); 

$objValidation->setFormula1(self::VALIDATION); 

然而,当我打开Excel生成,在下拉菜单可显示的字符串=工作表Sheet 3!$ B $ 2:$ B $ 21不是评估范围内的值列表。

这里有什么工作吗?

+1

或许,这可以帮助你? :http://stackoverflow.com/questions/17718546/phpexcel-data-validation-not-working-in-xls-format输出文件的格式是什么? Excel2007的?无论如何,尝试从常量验证中删除括号,也许setFormula1只是解析字符串而不是解释它:const VALIDATION ='= Sheet3!$ B $ 2:$ B $ 21'; – briosheje

+0

这只会在您的选择选项中显示VALIDATION的值。 – Mrid

回答

2

这是因为您将数据验证公式引用为字符串(使用双引号),因此它被解释为字符串。

的引用字符串将被视为一个逗号分隔的项目列表,这就是为什么'"Item A,Item B,Item C"'会的Item AItem BItem C列表进行处理。

对于一个公式,使用

const VALIDATION = '=Sheet3!$B$2:$B$21'; 
+0

这样做的工作。谢谢。 – Nap