首页 > 解决方案 > Laravel Excel 如何在具有多张工作表的模板文件上插入图像

问题描述

版本

描述

我想创建一个报表,获取第一个工作表的模板,在第一个工作表上插入图像,并插入更多不需要该图像的工作表。

我怎样才能:

附加信息

我的导出类示例能够基于模板创建第一个工作表。此外,它会创建额外的工作表,但图像不会插入到第一个工作表中。

这是当前的代码。

<?php

class ReportsWithInfoPageExport implements WithEvents, WithDrawings, WithMultipleSheets
{
    use Exportable;

    protected $data;
    protected $jobDetails;

    public function __construct($data,$jobDetails)
    {
        $this->data = $data;
        $this->jobDetails = $jobDetails;
    }

    /**
    * @return array
    */
    public function sheets(): array
    {
        $sheets = [];

        foreach ($this->data as $block => $data) {
            $sheets[] = new MultipleReports($block, $data);
        }

        return $sheets;
    }

    /**
    * @return Array
    */
    public function registerEvents(): array
    {
      return [

        BeforeExport::class => function(BeforeExport $event){
            $event->writer->reopen(new \Maatwebsite\Excel\Files\LocalTemporaryFile(storage_path('exports/report-front-page.xlsx')),Excel::XLSX);

            $event->writer->getSheetByIndex(0);
            $event->getWriter()->getSheetByIndex(0)->setCellValue('C2', 'Some Information');
            $event->getWriter()->getSheetByIndex(0)->setCellValue('G4', 'Some Information');
            return $event->getWriter()->getSheetByIndex(0);
         }
      ];
    }

    public function drawings()
    {
        $drawing = new Drawing();
        $drawing->setName('Logo');
        $drawing->setDescription('This is my logo');
        $drawing->setPath(storage_path('/img/logo.jpg'));
        $drawing->setHeight(50);
        $drawing->setWidth(50);
        $drawing->setCoordinates('A1');

        return $drawing;
    }
}

此代码基于模板创建工作表,创建许多工作表,但不会在第一个工作表上添加图像。

这可能是WithDrawings不使用的问题WithEventsWithMultipleSheets还是我错过了什么?

标签: phplaravellaravel-excel

解决方案


推荐阅读