AutorÃa | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace OpenSpout\Writer\XLSX\Entity;use OpenSpout\Common\Exception\InvalidArgumentException;use OpenSpout\Reader\XLSX\Helper\CellHelper;final class SheetView{private bool $showFormulas = false;private bool $showGridLines = true;private bool $showRowColHeaders = true;private bool $showZeroes = true;private bool $rightToLeft = false;private bool $tabSelected = false;private bool $showOutlineSymbols = true;private bool $defaultGridColor = true;private string $view = 'normal';private string $topLeftCell = 'A1';private int $colorId = 64;private int $zoomScale = 100;private int $zoomScaleNormal = 100;private int $zoomScalePageLayoutView = 100;private int $workbookViewId = 0;private int $freezeRow = 0;private string $freezeColumn = 'A';/*** @return $this*/public function setShowFormulas(bool $showFormulas): self{$this->showFormulas = $showFormulas;return $this;}/*** @return $this*/public function setShowGridLines(bool $showGridLines): self{$this->showGridLines = $showGridLines;return $this;}/*** @return $this*/public function setShowRowColHeaders(bool $showRowColHeaders): self{$this->showRowColHeaders = $showRowColHeaders;return $this;}/*** @return $this*/public function setShowZeroes(bool $showZeroes): self{$this->showZeroes = $showZeroes;return $this;}/*** @return $this*/public function setRightToLeft(bool $rightToLeft): self{$this->rightToLeft = $rightToLeft;return $this;}/*** @return $this*/public function setTabSelected(bool $tabSelected): self{$this->tabSelected = $tabSelected;return $this;}/*** @return $this*/public function setShowOutlineSymbols(bool $showOutlineSymbols): self{$this->showOutlineSymbols = $showOutlineSymbols;return $this;}/*** @return $this*/public function setDefaultGridColor(bool $defaultGridColor): self{$this->defaultGridColor = $defaultGridColor;return $this;}/*** @return $this*/public function setView(string $view): self{$this->view = $view;return $this;}/*** @return $this*/public function setTopLeftCell(string $topLeftCell): self{$this->topLeftCell = $topLeftCell;return $this;}/*** @return $this*/public function setColorId(int $colorId): self{$this->colorId = $colorId;return $this;}/*** @return $this*/public function setZoomScale(int $zoomScale): self{$this->zoomScale = $zoomScale;return $this;}/*** @return $this*/public function setZoomScaleNormal(int $zoomScaleNormal): self{$this->zoomScaleNormal = $zoomScaleNormal;return $this;}/*** @return $this*/public function setZoomScalePageLayoutView(int $zoomScalePageLayoutView): self{$this->zoomScalePageLayoutView = $zoomScalePageLayoutView;return $this;}/*** @return $this*/public function setWorkbookViewId(int $workbookViewId): self{$this->workbookViewId = $workbookViewId;return $this;}/*** @param positive-int $freezeRow Set to 2 to fix the first row** @return $this*/public function setFreezeRow(int $freezeRow): self{if ($freezeRow < 1) {throw new InvalidArgumentException('Freeze row must be a positive integer');}$this->freezeRow = $freezeRow;return $this;}/*** @param string $freezeColumn Set to B to fix the first column** @return $this*/public function setFreezeColumn(string $freezeColumn): self{$this->freezeColumn = strtoupper($freezeColumn);return $this;}public function getXml(): string{return '<sheetView'.$this->getSheetViewAttributes().'>'.$this->getFreezeCellPaneXml().'</sheetView>';}private function getSheetViewAttributes(): string{return $this->generateAttributes(['showFormulas' => $this->showFormulas,'showGridLines' => $this->showGridLines,'showRowColHeaders' => $this->showRowColHeaders,'showZeroes' => $this->showZeroes,'rightToLeft' => $this->rightToLeft,'tabSelected' => $this->tabSelected,'showOutlineSymbols' => $this->showOutlineSymbols,'defaultGridColor' => $this->defaultGridColor,'view' => $this->view,'topLeftCell' => $this->topLeftCell,'colorId' => $this->colorId,'zoomScale' => $this->zoomScale,'zoomScaleNormal' => $this->zoomScaleNormal,'zoomScalePageLayoutView' => $this->zoomScalePageLayoutView,'workbookViewId' => $this->workbookViewId,]);}private function getFreezeCellPaneXml(): string{if ($this->freezeRow < 2 && 'A' === $this->freezeColumn) {return '';}$columnIndex = CellHelper::getColumnIndexFromCellIndex($this->freezeColumn.'1');return '<pane'.$this->generateAttributes(['xSplit' => $columnIndex,'ySplit' => $this->freezeRow - 1,'topLeftCell' => $this->freezeColumn.$this->freezeRow,'activePane' => 'bottomRight','state' => 'frozen',]).'/>';}/*** @param array<string, bool|int|string> $data with key containing the attribute name and value containing the attribute value*/private function generateAttributes(array $data): string{// Create attribute for each key$attributes = array_map(static function (string $key, bool|int|string $value): string {if (\is_bool($value)) {$value = $value ? 'true' : 'false';}return $key.'="'.$value.'"';}, array_keys($data), $data);// Append all attributesreturn ' '.implode(' ', $attributes);}}