fix: noverify + типы для правил провеки

This commit is contained in:
origami11@yandex.ru 2025-01-21 19:33:33 +03:00
parent 9680409ba9
commit 90cbd3b2b6
10 changed files with 319 additions and 300 deletions

View file

@ -1,14 +1,14 @@
<?php
/**
* Клетка таблицы
* Клетка таблицы
*/
namespace ctiso\Excel;
use XMLWriter,
ctiso\Excel\DateTime as Excel_DateTime,
ctiso\Excel\Number as Excel_Number;
class TableCell
class TableCell
{
public $style = false;
public $value;
@ -21,27 +21,27 @@ class TableCell
}
/**
* Ряд таблицы
* Ряд таблицы
*/
class TableRow
{
public $style = false;
public $cells = array();
public $height = false;
function setCell($y, $value)
{
$this->cells[$y] = new TableCell($value);
}
function setCellStyle($y, $name)
function setCellStyle($y, $name)
{
$this->cells[$y]->style = $name;
}
}
/**
* Таблица
* Таблица
*/
class Table
{
@ -59,7 +59,7 @@ class Table
}
/**
* Записать значение в клетку с заданными координатами
* Записать значение в клетку с заданными координатами
*/
function setCell($x, $y, $value)
{
@ -116,7 +116,7 @@ class Table
* Обьединяет клетки в строке
* @param $row Номер ряда
* @param $cell Номер столбца
* @param $merge Количество клеток для обьединения
* @param $merge Количество клеток для обьединения
*/
function setCellMerge($x, $cell, $merge)
{
@ -129,9 +129,9 @@ class Table
/**
* Устанавливает стиль для клеток ряда
* @param $row integer Номер ряда
* @param $y integer Номер столбца
* @parma $name string Имя стиля
* @param int $row Номер ряда
* @param int $y Номер столбца
* @param string $name Имя стиля
*/
function setCellStyle ($row, $y, $name)
{
@ -141,41 +141,41 @@ class Table
/**
* Добавляет строку к таблице
*/
*/
function addRow($index = 1, array $data = [""])
{
assert(is_numeric($index) && $index > 0);
$offset = $this->getRows() + 1;
$this->setRow($offset, $index, $data);
return $offset;
}
}
/**
* Количество строк в таблице
*
* @return int
*/
*/
function getRows()
{
$keys/*: array*/ = array_keys($this->rows);
return max($keys);
}
/**
* Количество столбцов в строке
*
* @return int
*
* @return int
*/
function getRowCells(TableRow $row)
{
$keys/*: array*/ = array_keys($row->cells);
return max($keys);
}
}
/**
* Разделяет таблицу на две части по вертикали
* @param $n integer Количество столбцов слева
* @param int $n Количество столбцов слева
*/
function splitVertical($n) {
$this->_splitVertical = $n;
@ -183,7 +183,7 @@ class Table
/**
* Разделяет таблицу на две части по горизонтали
* @param $n integer Количество столбцов сверху
* @param int $n Количество столбцов сверху
*/
function splitHorizontal($n) {
$this->_splitHorizontal = $n;
@ -192,9 +192,9 @@ class Table
/**
* Количество столбцов в таблице
*
*
* @return int
*/
*/
function getColumns() {
return max(array_map([$this, 'getRowCells'], $this->rows));
}
@ -228,21 +228,21 @@ class Table
$doc->text($value->getString());
} else if ($value instanceof Excel_Number) {
$doc->writeAttribute('ss:Type', "Number");
$doc->text($value->getString());
$doc->text($value->getString());
} else {
if (is_string($value)) {
$doc->writeAttribute('ss:Type', "String");
} else {
$doc->writeAttribute('ss:Type', "Number");
}
$doc->writeCdata($this->encode($value));
}
$doc->writeCdata($this->encode($value));
}
$doc->endElement();
$doc->endElement();
$doc->endElement();
}
/**
* Генерация таблицы
* Генерация таблицы
*/
public function createTable (XMLWriter $doc) {
$doc->startElement('Worksheet');
@ -271,19 +271,19 @@ class Table
// Флаг индикатор подстановки номера столбца
$setIndex = false;
for ($j = 1; $j <= $columns; $j++) {
$value = null;
if (isset($nrow->cells[$j])) {
$value = $nrow->cells[$j]->value;
}
if (!empty($value)) {
$this->createCell($nrow->cells[$j], $doc, $j, $value, $setIndex);
$setIndex = false;
} else {
$setIndex = true;
}
}
}
}
$doc->endElement();
}
@ -293,7 +293,7 @@ class Table
}
protected function splitPane (XMLWriter $doc) {
$doc->startElement('WorksheetOptions');
$doc->startElement('WorksheetOptions');
$doc->writeAttribute('xmlns', 'urn:schemas-microsoft-com:office:excel');
$doc->writeElement('FrozenNoSplit');