我尝试了此页面上的代码(codeplex phpexcel validation issue for invalid values),仅验证数字字符的输入。我还搜索了PHPExcel开发人员文档,并出现了类似的代码。但是,当我使用我的代码并对其进行测试时,单元格甚至不接受数字字符..您可以建议其他方法过滤或验证仅输入数字字符的数据。
以下代码来自PHPExcel开发人员文档:
$objValidation = $objPHPExcel->getActiveSheet()->getCell('B3')
->getDataValidation();
$objValidation->setType( PHPExcel_Cell_DataValidation::TYPE_WHOLE );
$objValidation->setErrorStyle( PHPExcel_Cell_DataValidation::STYLE_STOP );
$objValidation->setAllowBlank(true);
$objValidation->setShowInputMessage(true);
$objValidation->setShowErrorMessage(true);
$objValidation->setErrorTitle('Input error');
$objValidation->setError('Number is not allowed!');
$objValidation->setPromptTitle('Allowed input');
$objValidation->setPrompt('Only numbers between 10 and 20 are allowed.');
$objValidation->setFormula1(10);
$objValidation->setFormula2(20);
答案 0 :(得分:0)
我遇到了同样的问题,并最终通过试验确定了错误,这是由于单元格格式设置为文本而不是导致问题的数字。添加
$objPHPExcel->getActiveSheet()->getStyle('B3')->getNumberFormat()->setFormatCode('#');
在您的$ objValidation之前的将解决问题。当然,您需要将格式设置为适合您情况的格式。在这种情况下,我只需要一个整数。
答案 1 :(得分:0)
您的代码只需要设置要执行的操作;另外,不要忘记使用Excel2007创建Writer,而不是使用Excel5。
这样的事情:
$objValidation = $phpexcel->getActiveSheet()->getCell('B3')
->getDataValidation();
$objValidation->setType( \PHPExcel_Cell_DataValidation::TYPE_DECIMAL ); //'or whole'
//This Line
$objValidation->setOperator(\PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN);
$objValidation->setAllowBlank(true);
$objValidation->setShowInputMessage(true);
$objValidation->setShowErrorMessage(true);
$objValidation->setErrorStyle( \PHPExcel_Cell_DataValidation::STYLE_STOP ); //'stop'
$objValidation->setErrorTitle('Ingrese solo números');
$objValidation->setError('Ingrese solo números');
$objValidation->setPromptTitle('Ingrese solo números');
$objValidation->setPrompt('Ingrese solo números');
$objValidation->setFormula1(0);
$objValidation->setFormula2(999999);
$objValidation->setAllowBlank(true);
$phpexcel->getActiveSheet()->getStyle('B3')->getNumberFormat()->setFormatCode('#');