PHPExcel 损坏的文件下拉列表不起作用 Windows Excel 数据验证

PHPExcel corrupt file Drop down list not working Windows Excel Data validation

如果我使用:

$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('"male,female"');

要创建一个 excel 文件,我在 windows Excel

上收到以下错误
1. We found a problem with some content in 'filename.xlsx'. Do you want to recover....
2. Removed Feature: Data validation from /xl/worksheets/shee1.xml part

如果我注释掉该代码,它会正常打开。

在 Ubuntu Libre Office 上按预期工作。

这在PHPExcel documentation

中都有解释

并且如果您查看 15datavalidation.php 等示例,它演示了如何创建列表类型数据验证

$objValidation = $objPHPExcel->getActiveSheet()
    ->getCell('B5')
    ->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION );
...
$objValidation->setFormula1('"Item A,Item B,Item C"');

显示如何创建固定值列表

$objValidation = $objPHPExcel->getActiveSheet()
    ->getCell('B7')
    ->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_LIST );
$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_INFORMATION );
...
$objValidation->setFormula1('$D:$D');

展示如何使用公式创建列表

示例 39dropdown.php 甚至展示了如何创建链接列表,其中一个列表中的值取决于另一个列表中的选定值