1

我有一个可以包含更多 50 个元素的一维数组,我想知道一种将它添加到 excel 单元格中的方法。我正在使用 PHPExcel,我知道我必须使用PHPExcel_Cell_DataValidation::TYPE_LIST它,但我没有找到将数组元素传递给 excel 单元格的方法。事实上,我想要的是计算我在这个数组中有多少元素,并在A列的单元格中设置与元素数量相同的下拉列表(数据验证列表)。

有人可以给我任何想法吗?

编辑 - 再解释一点问题:我有一个块名称列表,我正在尝试创建一个模板文件,用户可以下载该模板文件以更新新块的数据。如果他添加不同的块名称,它将创建一个新块,而不是更新,这就是为什么我想在工作表内“A”列的每个单元格中使用数据验证列表的原因。这样,用户可以选择已经存在的块名称(他不会混淆名称)。此外,他不需要拥有单元格中的所有块,因为他可以更新超过 50 个块的列表中的 2 个块的数据。(如果他有所有的块填充单元格,当他上传模板时,他也会上传他留空的块的数据......我想现在更容易理解我的问题了。

4

1 回答 1

4

我刚刚解决了。我发现了问题:

    $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到另一张表中并从中读取。

于 2012-08-21T12:21:23.780 回答