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

时间:2016-06-03 20:34:28

标签: php excel phpexcel

如果我使用:

$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上按预期工作。

1 个答案:

答案 0 :(得分:2)

PHPExcel documentation

中对此进行了解释

如果您查看 public class MyClass : INotifyPropertyChanged { private bool selectedA; public bool SelectedA { get { return !selectedA; } set { selectedA = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("SelectedA")); } } private bool selectedB; public bool SelectedB { get { return !selectedB; } set { selectedB = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("SelectedB")); } } public event PropertyChangedEventHandler PropertyChanged; } 等示例,它将演示如何创建列表类型数据验证

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$2:$D$6'); 甚至显示了如何创建链接列表,其中一个列表中的值取决于另一个列表的选定值