ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
DataValidations.php
Go to the documentation of this file.
1<?php
2
4
7use SimpleXMLElement;
8
10{
11 private $worksheet;
12
14
15 public function __construct(Worksheet $workSheet, SimpleXMLElement $worksheetXml)
16 {
17 $this->worksheet = $workSheet;
18 $this->worksheetXml = $worksheetXml;
19 }
20
21 public function load(): void
22 {
23 foreach ($this->worksheetXml->dataValidations->dataValidation as $dataValidation) {
24 // Uppercase coordinate
25 $range = strtoupper($dataValidation['sqref']);
26 $rangeSet = explode(' ', $range);
27 foreach ($rangeSet as $range) {
28 $stRange = $this->worksheet->shrinkRangeToFit($range);
29
30 // Extract all cell references in $range
31 foreach (Coordinate::extractAllCellReferencesInRange($stRange) as $reference) {
32 // Create validation
33 $docValidation = $this->worksheet->getCell($reference)->getDataValidation();
34 $docValidation->setType((string) $dataValidation['type']);
35 $docValidation->setErrorStyle((string) $dataValidation['errorStyle']);
36 $docValidation->setOperator((string) $dataValidation['operator']);
37 $docValidation->setAllowBlank($dataValidation['allowBlank'] != 0);
38 $docValidation->setShowDropDown($dataValidation['showDropDown'] == 0);
39 $docValidation->setShowInputMessage($dataValidation['showInputMessage'] != 0);
40 $docValidation->setShowErrorMessage($dataValidation['showErrorMessage'] != 0);
41 $docValidation->setErrorTitle((string) $dataValidation['errorTitle']);
42 $docValidation->setError((string) $dataValidation['error']);
43 $docValidation->setPromptTitle((string) $dataValidation['promptTitle']);
44 $docValidation->setPrompt((string) $dataValidation['prompt']);
45 $docValidation->setFormula1((string) $dataValidation->formula1);
46 $docValidation->setFormula2((string) $dataValidation->formula2);
47 }
48 }
49 }
50 }
51}
An exception for terminatinating execution or to throw for unit testing.
Helper class to manipulate cell coordinates.
Definition: Coordinate.php:15
static extractAllCellReferencesInRange($cellRange)
Extract all cell references in range, which may be comprised of multiple cell ranges.
Definition: Coordinate.php:338
__construct(Worksheet $workSheet, SimpleXMLElement $worksheetXml)