PHPOffice \ Excel Styling Worksheet без объекта электронной таблицы - PullRequest
0 голосов
/ 30 октября 2018

У меня проблемы с оформлением ячеек в объекте листа, который еще не принадлежит объекту электронной таблицы. Это возможно? Это кажется невозможным с помощью метода getStyle (), так как этот метод вызывает функции в родительской электронной таблице. Может есть другой способ?

Класс рабочего листа:

    class MyWorksheet extends \PHPOffice\PHPSpreadsheet\Worksheet\Worksheet {

        public function something() {
            $this->setCellValue('A1', 'Something');
            $this->getStyle('A1')->ApplyFromArray([
                'font' => ['bold' => true]
            ]);
         } 
    }

Когда что-то () выполняется, это приводит к setActiveSheetIndex () с нулевым исключением.

1 Ответ

0 голосов
/ 07 ноября 2018

Форматирование ячеек

Ячейка может быть отформатирована с использованием шрифта, рамки, заливки, ... стиля. Например, можно установить цвет переднего плана ячейки на красный, выровненный вправо, а границу - на стиль черной и толстой рамок.

Некоторые примеры:

$spreadsheet->getActiveSheet()->getStyle('B3:B7')->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor()->setARGB('FFFF0000');

На рабочем листе (ваш случай)

$worksheet->getParent()->getDefaultStyle()->applyFromArray([
    'font' => [
        'name' => $pValue->getFont()->getName(),
        'size' => $pValue->getFont()->getSize(),
    ],
]);

OR

Непосредственно в электронной таблице

$styleArray = [
    'font' => [
        'bold' => true,
    ],
    'alignment' => [
        'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT,
    ],
    'borders' => [
        'top' => [
            'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
        ],
    ],
    'fill' => [
        'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_GRADIENT_LINEAR,
        'rotation' => 90,
        'startColor' => [
            'argb' => 'FFA0A0A0',
        ],
        'endColor' => [
            'argb' => 'FFFFFFFF',
        ],
    ],
];

$spreadsheet->getActiveSheet()->getStyle('A3')->applyFromArray($styleArray);

https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/

...