验证公式未保存为函数

时间:2019-02-19 16:54:14

标签: php excel libreoffice phpspreadsheet

我正在使用PhpSpreadsheet在PHP中生成XLSX文件,并尝试实现动态下拉列表作为验证规则。

    $validator = $cell->getDataValidation();

    $validator->setType(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::TYPE_LIST);
    $validator->setErrorStyle( \PhpOffice\PhpSpreadsheet\Cell\DataValidation::STYLE_INFORMATION );
    $validator->setAllowBlank(false);
    $validator->setShowInputMessage(true);
    $validator->setShowErrorMessage(true);
    $validator->setShowDropDown(true);
    $validator->setFormula1("=OFFSET(values!\$D\$2:\$D\$6,OFFSET(values!\$B\$2,MATCH(A2,values!\$A\$2:\$A\$3)-1,0),0,OFFSET(values!\$C\$2,MATCH(A2,values!\$A\$2:\$A\$3)-1,0),1)");

当我使用简单的范围表达式,例如values!$A$2:$A$20时,它可以正常工作。但是,当像上面那样使用函数时,然后在Libreoffice中打开工作表后,验证公式不会以=(等于)符号开头,并且验证规则无效。

当我在特定单元格的验证设置中手动编辑公式,并在开头添加=时,一切正常。 有没有在验证规则中添加公式的解决方案?

更新:现在我在Excel 2010中进行了尝试,但这只是将验证规则作为recovery形式的不可读数据删除了。当仅使用范围表达式时,它可以很好地工作,所以我的猜测是PhpSpreadsheet弄乱了格式。

0 个答案:

没有答案