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.
yanzong/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Row.php

120 lines
4.0 KiB

<?php
namespace PhpOffice\PhpSpreadsheet\Worksheet;
class Row
{
/**
* \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet.
*
* @var Worksheet
*/
private $worksheet;
/**
* Row index.
*
* @var int
*/
private $rowIndex = 0;
/**
* Create a new row.
*
* @param int $rowIndex
*/
public function __construct(Worksheet $worksheet, $rowIndex = 1)
{
// Set parent and row index
$this->worksheet = $worksheet;
$this->rowIndex = $rowIndex;
}
/**
* Destructor.
*/
public function __destruct()
{
$this->worksheet = null; // @phpstan-ignore-line
}
/**
* Get row index.
*/
public function getRowIndex(): int
{
return $this->rowIndex;
}
/**
* Get cell iterator.
*
* @param string $startColumn The column address at which to start iterating
* @param string $endColumn Optionally, the column address at which to stop iterating
*/
public function getCellIterator($startColumn = 'A', $endColumn = null): RowCellIterator
{
return new RowCellIterator($this->worksheet, $this->rowIndex, $startColumn, $endColumn);
}
/**
* Get column iterator. Synonym for getCellIterator().
*
* @param string $startColumn The column address at which to start iterating
* @param string $endColumn Optionally, the column address at which to stop iterating
*/
public function getColumnIterator($startColumn = 'A', $endColumn = null): RowCellIterator
{
return $this->getCellIterator($startColumn, $endColumn);
}
/**
* Returns a boolean true if the row contains no cells. By default, this means that no cell records exist in the
* collection for this row. false will be returned otherwise.
* This rule can be modified by passing a $definitionOfEmptyFlags value:
* 1 - CellIterator::TREAT_NULL_VALUE_AS_EMPTY_CELL If the only cells in the collection are null value
* cells, then the row will be considered empty.
* 2 - CellIterator::TREAT_EMPTY_STRING_AS_EMPTY_CELL If the only cells in the collection are empty
* string value cells, then the row will be considered empty.
* 3 - CellIterator::TREAT_NULL_VALUE_AS_EMPTY_CELL | CellIterator::TREAT_EMPTY_STRING_AS_EMPTY_CELL
* If the only cells in the collection are null value or empty string value cells, then the row
* will be considered empty.
*
* @param int $definitionOfEmptyFlags
* Possible Flag Values are:
* CellIterator::TREAT_NULL_VALUE_AS_EMPTY_CELL
* CellIterator::TREAT_EMPTY_STRING_AS_EMPTY_CELL
* @param string $startColumn The column address at which to start checking if cells are empty
* @param string $endColumn Optionally, the column address at which to stop checking if cells are empty
*/
public function isEmpty(int $definitionOfEmptyFlags = 0, $startColumn = 'A', $endColumn = null): bool
{
$nullValueCellIsEmpty = (bool) ($definitionOfEmptyFlags & CellIterator::TREAT_NULL_VALUE_AS_EMPTY_CELL);
$emptyStringCellIsEmpty = (bool) ($definitionOfEmptyFlags & CellIterator::TREAT_EMPTY_STRING_AS_EMPTY_CELL);
$cellIterator = $this->getCellIterator($startColumn, $endColumn);
$cellIterator->setIterateOnlyExistingCells(true);
foreach ($cellIterator as $cell) {
/** @scrutinizer ignore-call */
$value = $cell->getValue();
if ($value === null && $nullValueCellIsEmpty === true) {
continue;
}
if ($value === '' && $emptyStringCellIsEmpty === true) {
continue;
}
return false;
}
return true;
}
/**
* Returns bound worksheet.
*/
public function getWorksheet(): Worksheet
{
return $this->worksheet;
}
}