You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.2 KiB
134 lines
3.2 KiB
<?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.
|
|
* By default, this will be the return value; but this method also accepts a unit of measure argument and will
|
|
* return the value converted to the specified UoM using an approximation method.
|
|
*/
|
|
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.
|
|
* By default, this will be the unit of measure for the passed value; but this method accepts a 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;
|
|
}
|
|
}
|
|
|