| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <?php
- namespace PhpOffice\PhpSpreadsheet\Worksheet;
- use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
- use PhpOffice\PhpSpreadsheet\Helper\Dimension as CssDimension;
- class ColumnDimension extends Dimension
- {
- /**
- * Column index.
- *
- * @var ?string
- */
- private $columnIndex;
- /**
- * Column width.
- *
- * When this is set to a negative value, the column width should be ignored by IWriter
- *
- * @var float
- */
- private $width = -1;
- /**
- * Auto size?
- *
- * @var bool
- */
- private $autoSize = false;
- /**
- * Create a new ColumnDimension.
- *
- * @param ?string $index Character column index
- */
- public function __construct($index = 'A')
- {
- // Initialise values
- $this->columnIndex = $index;
- // set dimension as unformatted by default
- parent::__construct(0);
- }
- /**
- * Get column index as string eg: 'A'.
- */
- public function getColumnIndex(): ?string
- {
- return $this->columnIndex;
- }
- /**
- * Set column index as string eg: 'A'.
- */
- public function setColumnIndex(string $index): self
- {
- $this->columnIndex = $index;
- return $this;
- }
- /**
- * Get column index as numeric.
- */
- public function getColumnNumeric(): int
- {
- return Coordinate::columnIndexFromString($this->columnIndex ?? '');
- }
- /**
- * Set column index as numeric.
- */
- public function setColumnNumeric(int $index): self
- {
- $this->columnIndex = Coordinate::stringFromColumnIndex($index);
- return $this;
- }
- /**
- * Get Width.
- *
- * Each unit of column width is equal to the width of one character in the default font size. A value of -1
- * tells Excel to display this column in its default width.
- * By default, this will be the return value; but this method also accepts an optional unit of measure argument
- * and will convert the returned value to the specified UoM..
- */
- public function getWidth(?string $unitOfMeasure = null): float
- {
- return ($unitOfMeasure === null || $this->width < 0)
- ? $this->width
- : (new CssDimension((string) $this->width))->toUnit($unitOfMeasure);
- }
- /**
- * Set Width.
- *
- * Each unit of column width is equal to the width of one character in the default font size. A value of -1
- * tells Excel to display this column in its default width.
- * By default, this will be the unit of measure for the passed value; but this method also accepts an
- * optional unit of measure argument, and will convert the value from the specified UoM using an
- * approximation method.
- *
- * @return $this
- */
- public function setWidth(float $width, ?string $unitOfMeasure = null)
- {
- $this->width = ($unitOfMeasure === null || $width < 0)
- ? $width
- : (new CssDimension("{$width}{$unitOfMeasure}"))->width();
- return $this;
- }
- /**
- * Get Auto Size.
- */
- public function getAutoSize(): bool
- {
- return $this->autoSize;
- }
- /**
- * Set Auto Size.
- *
- * @return $this
- */
- public function setAutoSize(bool $autosizeEnabled)
- {
- $this->autoSize = $autosizeEnabled;
- return $this;
- }
- }
|