1

我在不属于电子表格对象的工作表对象中设置单元格样式时遇到问题。这可能吗?使用 getStyle() 方法似乎不可能,因为此方法调用父电子表格中的函数。也许还有另一种方法?

工作表类:

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

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

当 something() 被执行时,它会导致 setActiveSheetIndex() on null 异常。

4

1 回答 1

2

格式化单元格

可以使用字体、边框、填充、...样式信息来格式化单元格。例如,可以将单元格的前景色设置为红色,向右对齐,将边框设置为黑色和粗边框样式。

一些例子:

$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(),
    ],
]);

或者

直接在电子表格上

$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/

于 2018-11-07T15:59:40.310 回答