我正在使用PHPExcel,我想验证单元格的值。嗯,这个代码非常合适:
SELECT
T1.Item
, (T2.QTY-T1.QTY) AS [QTY Diff]
, (T2.Amount - T1.Amount) AS [Amount Diff]
FROM
<<Table>> T1
LEFT OUTER JOIN <<Table>> T2
ON T1.Item=T2.Item
AND T1.YEAR=(T2.YEAR-1);
但现在我想添加两个默认值 - 字符串 - 这也应该是允许的,p.e。 “cancled”或“miss”。 这可能吗?我没有找到这个方向的任何东西? 另一个想法是创建一个隐藏的工作表,但我不知道相应的值列表是什么。
谢谢!
更新:
感谢Tim Williams我试过:
$objValidation = $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($tdCount-1,$ii)->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('Only integers between '.$min.' and '.$max.' allowed');
$objValidation->setPromptTitle('Permitted Input:');
$objValidation->setPrompt('Only integers between '.$min.' and '.$max.' allowed');
$objValidation->setFormula1(intval($min));
$objValidation->setFormula2(intval($max));
奇怪的是,第一个AND表达式已经过验证,我无法在min / max之外输入另一个数字。但我仍然无法进入“取消”或“错过”。通过在OpenOffice中插入此公式,我获得了正确的布尔值。
在PHPExcel中使用自定义公式进行验证是否正确?
答案 0 :(得分:0)
可能你可以使用基于公式的验证:例如,这对我有用,假设你只想允许10到100之间的整数或值#34;取消&#34;,&#34;错过&#34 ; -
=OR(IFERROR(AND(ROUND(H13,0)=H13,H13>=10,H13<=100),FALSE),
OR(H13="canceled",H13="missed"))
我不知道如何转换为PHPExcel,因此只有半个答案
答案 1 :(得分:0)
尝试评估Excel公式(FORMULAS =>评估公式),它可能会为您提供一些线索。
在我遇到的类似情况下,允许使用十进制范围或特定的字符串,使用TYPE检查有助于解决问题。
类似的东西:
= IF(TYPE(A1)= 1,AND(A1> = 0,A1 <= 10),A1 =“ allowme”)