PHPExcel数字字符的数据验证

时间:2014-01-28 05:50:49

标签: phpexcel validation

我尝试了此页面上的代码(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);

2 个答案:

答案 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('#');