Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
<?php

namespace PhpOffice\PhpSpreadsheet\Reader\Xlsx;

use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
> use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
> use SimpleXMLElement;
class SheetViews extends BaseParserClass {
> /** @var SimpleXMLElement */
private $sheetViewXml;
> /** @var SimpleXMLElement */ private $worksheet; > private $sheetViewAttributes; > public function __construct(\SimpleXMLElement $sheetViewXml, Worksheet $workSheet) > /** @var Worksheet */
< public function __construct(\SimpleXMLElement $sheetViewXml, Worksheet $workSheet)
> public function __construct(SimpleXMLElement $sheetViewXml, Worksheet $workSheet)
$this->sheetViewXml = $sheetViewXml;
> $this->sheetViewAttributes = Xlsx::testSimpleXml($sheetViewXml->attributes());
$this->worksheet = $workSheet; }
< public function load()
> public function load(): void
{
> $this->topLeft();
$this->zoomScale(); $this->view(); $this->gridLines(); $this->headers(); $this->direction(); $this->showZeros(); if (isset($this->sheetViewXml->pane)) { $this->pane(); }
< if (isset($this->sheetViewXml->selection, $this->sheetViewXml->selection['sqref'])) {
> if (isset($this->sheetViewXml->selection, $this->sheetViewXml->selection->attributes()->sqref)) {
$this->selection(); } }
< private function zoomScale()
> private function zoomScale(): void
{
< if (isset($this->sheetViewXml['zoomScale'])) { < $zoomScale = (int) ($this->sheetViewXml['zoomScale']);
> if (isset($this->sheetViewAttributes->zoomScale)) { > $zoomScale = (int) ($this->sheetViewAttributes->zoomScale);
if ($zoomScale <= 0) { // setZoomScale will throw an Exception if the scale is less than or equals 0 // that is OK when manually creating documents, but we should be able to read all documents $zoomScale = 100; } $this->worksheet->getSheetView()->setZoomScale($zoomScale); }
< if (isset($this->sheetViewXml['zoomScaleNormal'])) { < $zoomScaleNormal = (int) ($this->sheetViewXml['zoomScaleNormal']);
> if (isset($this->sheetViewAttributes->zoomScaleNormal)) { > $zoomScaleNormal = (int) ($this->sheetViewAttributes->zoomScaleNormal);
if ($zoomScaleNormal <= 0) { // setZoomScaleNormal will throw an Exception if the scale is less than or equals 0 // that is OK when manually creating documents, but we should be able to read all documents $zoomScaleNormal = 100; } $this->worksheet->getSheetView()->setZoomScaleNormal($zoomScaleNormal); } }
< private function view()
> private function view(): void
{
< if (isset($this->sheetViewXml['view'])) { < $this->worksheet->getSheetView()->setView((string) $this->sheetViewXml['view']);
> if (isset($this->sheetViewAttributes->view)) { > $this->worksheet->getSheetView()->setView((string) $this->sheetViewAttributes->view);
} }
< private function gridLines()
> private function topLeft(): void
{
< if (isset($this->sheetViewXml['showGridLines'])) {
> if (isset($this->sheetViewAttributes->topLeftCell)) { > $this->worksheet->setTopLeftCell($this->sheetViewAttributes->topLeftCell); > } > } > > private function gridLines(): void > { > if (isset($this->sheetViewAttributes->showGridLines)) {
$this->worksheet->setShowGridLines(
< self::boolean((string) $this->sheetViewXml['showGridLines'])
> self::boolean((string) $this->sheetViewAttributes->showGridLines)
); } }
< private function headers()
> private function headers(): void
{
< if (isset($this->sheetViewXml['showRowColHeaders'])) {
> if (isset($this->sheetViewAttributes->showRowColHeaders)) {
$this->worksheet->setShowRowColHeaders(
< self::boolean((string) $this->sheetViewXml['showRowColHeaders'])
> self::boolean((string) $this->sheetViewAttributes->showRowColHeaders)
); } }
< private function direction()
> private function direction(): void
{
< if (isset($this->sheetViewXml['rightToLeft'])) {
> if (isset($this->sheetViewAttributes->rightToLeft)) {
$this->worksheet->setRightToLeft(
< self::boolean((string) $this->sheetViewXml['rightToLeft'])
> self::boolean((string) $this->sheetViewAttributes->rightToLeft)
); } }
< private function showZeros()
> private function showZeros(): void
{
< if (isset($this->sheetViewXml['showZeros'])) {
> if (isset($this->sheetViewAttributes->showZeros)) {
$this->worksheet->getSheetView()->setShowZeros(
< self::boolean((string) $this->sheetViewXml['showZeros'])
> self::boolean((string) $this->sheetViewAttributes->showZeros)
); } }
< private function pane()
> private function pane(): void
{ $xSplit = 0; $ySplit = 0; $topLeftCell = null;
> $paneAttributes = $this->sheetViewXml->pane->attributes();
< if (isset($this->sheetViewXml->pane['xSplit'])) { < $xSplit = (int) ($this->sheetViewXml->pane['xSplit']);
> if (isset($paneAttributes->xSplit)) { > $xSplit = (int) ($paneAttributes->xSplit);
}
< if (isset($this->sheetViewXml->pane['ySplit'])) { < $ySplit = (int) ($this->sheetViewXml->pane['ySplit']);
> if (isset($paneAttributes->ySplit)) { > $ySplit = (int) ($paneAttributes->ySplit);
}
< if (isset($this->sheetViewXml->pane['topLeftCell'])) { < $topLeftCell = (string) $this->sheetViewXml->pane['topLeftCell'];
> if (isset($paneAttributes->topLeftCell)) { > $topLeftCell = (string) $paneAttributes->topLeftCell;
} $this->worksheet->freezePane( Coordinate::stringFromColumnIndex($xSplit + 1) . ($ySplit + 1), $topLeftCell ); }
< private function selection()
> private function selection(): void
{
< $sqref = (string) $this->sheetViewXml->selection['sqref'];
> $attributes = $this->sheetViewXml->selection->attributes(); > if ($attributes !== null) { > $sqref = (string) $attributes->sqref;
$sqref = explode(' ', $sqref); $sqref = $sqref[0];
<
$this->worksheet->setSelectedCells($sqref);
> }
} }