Merge 0ecc7260eb36b6beb143a0c3b2dd81f153161b5e into 84596668410bea89d21aa9867b91e1550e359329

This commit is contained in:
Alexander Stankeev 2022-05-26 15:55:27 +02:00 committed by GitHub
commit ca42c6c9eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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}
*/