PHPExcel数字字符的数据验证

PHPExcel数字字符的数据验证,phpexcel,validation,Phpexcel,Validation,我尝试了这个页面()上的代码,只验证数字字符的输入。我还搜索了PHPExcel开发人员文档,出现了类似的代码。但当我将其与代码一起应用并测试时,该单元格甚至不接受数字字符。。您是否可以建议仅对数字字符输入的数据进行过滤或验证的其他方法 以下代码来自PHPExcel开发人员文档: $objValidation = $objPHPExcel->getActiveSheet()->getCell('B3') ->getDataValidation(); $objValidation

我尝试了这个页面()上的代码,只验证数字字符的输入。我还搜索了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);

我遇到了同样的问题,最后通过反复试验确定是由于单元格格式设置为文本而不是数字导致了问题。添加

$objPHPExcel->getActiveSheet()->getStyle('B3')->getNumberFormat()->setFormatCode('#');

在$objValidation之前,将解决此问题。当然,您需要将格式设置为适用于您的情况的格式。在这种情况下,我只需要一个整数。

您的代码只需要设置要执行的操作;另外,不要忘记使用Excel2007而不是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('#');