Adding row attributes.

This commit is contained in:
Alex Stankeev 2022-03-18 10:48:00 +03:00
parent cc42c1d29f
commit 0ecc7260eb
2 changed files with 46 additions and 1 deletions

View File

@ -6,6 +6,12 @@ use Box\Spout\Common\Entity\Style\Style;
class Row
{
/**
* The extended attributes in this row
* @var string[]
*/
protected $attributes = [];
/**
* The cells in this row
* @var Cell[]
@ -30,6 +36,26 @@ class Row
->setStyle($style);
}
/**
* @return array
*/
public function getAttributes()
{
return $this->attributes;
}
/**
* @param string $name
* @param $value
* @return Row
*/
public function setAttribute(string $name, $value)
{
$this->attributes[$name] = (string) $value;
return $this;
}
/**
* @return Cell[] $cells
*/

View File

@ -151,7 +151,12 @@ EOD;
$rowIndexOneBased = $worksheet->getLastWrittenRowIndex() + 1;
$numCells = $row->getNumCells();
$rowXML = '<row r="' . $rowIndexOneBased . '" spans="1:' . $numCells . '">';
$defaultAttributes = [
'r' => $rowIndexOneBased,
'spans' => '1:' . $numCells,
];
$rowXML = $this->getRowXML(array_merge($row->getAttributes(), $defaultAttributes));
foreach ($row->getCells() as $columnIndexZeroBased => $cell) {
$registeredStyle = $this->applyStyleAndRegister($cell, $rowStyle);
@ -275,6 +280,20 @@ EOD;
return $cellXMLFragment;
}
/**
* @param array $attributes
* @return string
*/
private function getRowXML(array $attributes)
{
$attributes = array_map(function($key) use ($attributes)
{
return $key . '="' . $this->stringsEscaper->escape($attributes[$key]) . '"';
}, array_keys($attributes));
return '<row ' . implode(' ', $attributes) . '>';
}
/**
* {@inheritdoc}
*/