我有一个一维数组,它可以包含更多的50个元素,我想知道一种将其添加到excel单元格中的方法。我使用的是PHPExcel,我知道必须使用PHPExcel_Cell_DataValidation::TYPE_LIST
才能做到这一点,但我没有找到将数组元素传递到excel单元格的方法。事实上,我想要的是计算这个数组中有多少元素,并在A
列的单元格中设置与元素数量相同的下拉列表(数据验证列表)。
有人能给我什么主意吗?
EDIT-进一步解释问题:我有一个块名称列表,我正在尝试创建一个模板文件,用户可以下载该文件来更新新块的数据。如果他添加了一个不同的块名称,它将创建一个新的块,而不是更新,这就是为什么我想在工作表中"a"列的每个单元格中使用数据验证列表。通过这种方式,用户可以选择已经存在的块名(他不会在写块名时混淆)。此外,他不需要将所有块都放在单元格中,因为他可以用50多个块更新列表中2个块的数据。(如果他有所有的块填充单元格,当他上传模板时,他也会上传他留下的空块的数据……我想现在更容易理解我的问题了。
我刚刚解决了它。我发现了问题:
$blocksList = implode (", ", $blockNames);
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("lalala SAS")
->setTitle("Bulk Upload Template");
//Data Validation list
$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')->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('"'.$blocksList.'"');
问题是我的$blocksKist太大了,excel公式只支持255个字符。这样,我将把我的$blocksList
添加到另一张表中,并从中读取。