private function PHPExcel_Writer_Excel5_Worksheet::_writeDataValidity in Loft Data Grids 6.2
Same name and namespace in other branches
- 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Writer/Excel5/Worksheet.php \PHPExcel_Writer_Excel5_Worksheet::_writeDataValidity()
* Store the DATAVALIDATIONS and DATAVALIDATION records.
1 call to PHPExcel_Writer_Excel5_Worksheet::_writeDataValidity()
- PHPExcel_Writer_Excel5_Worksheet::close in vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Writer/ Excel5/ Worksheet.php - * Add data to the beginning of the workbook (note the reverse order) * and to the end of the workbook. * * @access public *
File
- vendor/
phpoffice/ phpexcel/ Classes/ PHPExcel/ Writer/ Excel5/ Worksheet.php, line 2816
Class
- PHPExcel_Writer_Excel5_Worksheet
- PHPExcel_Writer_Excel5_Worksheet
Code
private function _writeDataValidity() {
// Datavalidation collection
$dataValidationCollection = $this->_phpSheet
->getDataValidationCollection();
// Write data validations?
if (!empty($dataValidationCollection)) {
// DATAVALIDATIONS record
$record = 0x1b2;
// Record identifier
$length = 0x12;
// Bytes to follow
$grbit = 0x0;
// Prompt box at cell, no cached validity data at DV records
$horPos = 0x0;
// Horizontal position of prompt box, if fixed position
$verPos = 0x0;
// Vertical position of prompt box, if fixed position
$objId = 0xffffffff;
// Object identifier of drop down arrow object, or -1 if not visible
$header = pack('vv', $record, $length);
$data = pack('vVVVV', $grbit, $horPos, $verPos, $objId, count($dataValidationCollection));
$this
->_append($header . $data);
// DATAVALIDATION records
$record = 0x1be;
// Record identifier
foreach ($dataValidationCollection as $cellCoordinate => $dataValidation) {
// initialize record data
$data = '';
// options
$options = 0x0;
// data type
$type = $dataValidation
->getType();
switch ($type) {
case PHPExcel_Cell_DataValidation::TYPE_NONE:
$type = 0x0;
break;
case PHPExcel_Cell_DataValidation::TYPE_WHOLE:
$type = 0x1;
break;
case PHPExcel_Cell_DataValidation::TYPE_DECIMAL:
$type = 0x2;
break;
case PHPExcel_Cell_DataValidation::TYPE_LIST:
$type = 0x3;
break;
case PHPExcel_Cell_DataValidation::TYPE_DATE:
$type = 0x4;
break;
case PHPExcel_Cell_DataValidation::TYPE_TIME:
$type = 0x5;
break;
case PHPExcel_Cell_DataValidation::TYPE_TEXTLENGTH:
$type = 0x6;
break;
case PHPExcel_Cell_DataValidation::TYPE_CUSTOM:
$type = 0x7;
break;
}
$options |= $type << 0;
// error style
$errorStyle = $dataValidation
->getType();
switch ($errorStyle) {
case PHPExcel_Cell_DataValidation::STYLE_STOP:
$errorStyle = 0x0;
break;
case PHPExcel_Cell_DataValidation::STYLE_WARNING:
$errorStyle = 0x1;
break;
case PHPExcel_Cell_DataValidation::STYLE_INFORMATION:
$errorStyle = 0x2;
break;
}
$options |= $errorStyle << 4;
// explicit formula?
if ($type == 0x3 && preg_match('/^\\".*\\"$/', $dataValidation
->getFormula1())) {
$options |= 0x1 << 7;
}
// empty cells allowed
$options |= $dataValidation
->getAllowBlank() << 8;
// show drop down
$options |= !$dataValidation
->getShowDropDown() << 9;
// show input message
$options |= $dataValidation
->getShowInputMessage() << 18;
// show error message
$options |= $dataValidation
->getShowErrorMessage() << 19;
// condition operator
$operator = $dataValidation
->getOperator();
switch ($operator) {
case PHPExcel_Cell_DataValidation::OPERATOR_BETWEEN:
$operator = 0x0;
break;
case PHPExcel_Cell_DataValidation::OPERATOR_NOTBETWEEN:
$operator = 0x1;
break;
case PHPExcel_Cell_DataValidation::OPERATOR_EQUAL:
$operator = 0x2;
break;
case PHPExcel_Cell_DataValidation::OPERATOR_NOTEQUAL:
$operator = 0x3;
break;
case PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHAN:
$operator = 0x4;
break;
case PHPExcel_Cell_DataValidation::OPERATOR_LESSTHAN:
$operator = 0x5;
break;
case PHPExcel_Cell_DataValidation::OPERATOR_GREATERTHANOREQUAL:
$operator = 0x6;
break;
case PHPExcel_Cell_DataValidation::OPERATOR_LESSTHANOREQUAL:
$operator = 0x7;
break;
}
$options |= $operator << 20;
$data = pack('V', $options);
// prompt title
$promptTitle = $dataValidation
->getPromptTitle() !== '' ? $dataValidation
->getPromptTitle() : chr(0);
$data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($promptTitle);
// error title
$errorTitle = $dataValidation
->getErrorTitle() !== '' ? $dataValidation
->getErrorTitle() : chr(0);
$data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($errorTitle);
// prompt text
$prompt = $dataValidation
->getPrompt() !== '' ? $dataValidation
->getPrompt() : chr(0);
$data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($prompt);
// error text
$error = $dataValidation
->getError() !== '' ? $dataValidation
->getError() : chr(0);
$data .= PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong($error);
// formula 1
try {
$formula1 = $dataValidation
->getFormula1();
if ($type == 0x3) {
// list type
$formula1 = str_replace(',', chr(0), $formula1);
}
$this->_parser
->parse($formula1);
$formula1 = $this->_parser
->toReversePolish();
$sz1 = strlen($formula1);
} catch (PHPExcel_Exception $e) {
$sz1 = 0;
$formula1 = '';
}
$data .= pack('vv', $sz1, 0x0);
$data .= $formula1;
// formula 2
try {
$formula2 = $dataValidation
->getFormula2();
if ($formula2 === '') {
throw new PHPExcel_Writer_Exception('No formula2');
}
$this->_parser
->parse($formula2);
$formula2 = $this->_parser
->toReversePolish();
$sz2 = strlen($formula2);
} catch (PHPExcel_Exception $e) {
$sz2 = 0;
$formula2 = '';
}
$data .= pack('vv', $sz2, 0x0);
$data .= $formula2;
// cell range address list
$data .= pack('v', 0x1);
$data .= $this
->_writeBIFF8CellRangeAddressFixed($cellCoordinate);
$length = strlen($data);
$header = pack("vv", $record, $length);
$this
->_append($header . $data);
}
}
}