0

我正在使用Maatwebsite V3.1将数据导出为 excel 文件。我正在遍历数据并按照Export Class中的 excel 结构对其进行格式化。数据结构是这样的,

public function map($user): array {
    return [
               $user->name , $user->ref_title , $user->ref_link
        ];
}

我想合并ref_titleref_link,因为在 excel 文件中ref_title 文本将是 ref_link 的可点击超链接。喜欢,ref_title

我在Maatwebsite/Laravel-Excel v3.1中找不到任何关于映射超链接的示例或文档。任何人都可以在不使用视图(刀片文件)的情况下给我任何想法或示例吗?我感谢您的帮助。

4

1 回答 1

0

只需尝试使用registerEvents()方法,尝试添加此代码:

public function registerEvents(): array
    {
        return [
            AfterSheet::class => function (AfterSheet $event) {
                /** @var Worksheet $sheet */
                foreach ($event->sheet->getColumnIterator('H') as $row) {
                    foreach ($row->getCellIterator() as $cell) {
                        if ($cell->getValue() != "" && str_contains($cell->getValue(), '://')) {
                            $cell->setHyperlink(new Hyperlink($cell->getValue(), 'Read'));

                            // Upd: Link styling added
                            $event->sheet->getStyle($cell->getCoordinate())->applyFromArray([
                                'font' => [
                                    'color' => ['rgb' => '0000FF'],
                                    'underline' => 'single'
                                ]
                            ]);
                        }
                    }
                }
            },
        ];
    }

不要忘记实现WithEvents和使用PhpOffice\PhpSpreadsheet\Cell\Hyperlink

希望它会有所帮助:)

于 2022-02-03T08:00:37.507 回答