You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Excel(maatwebsite):如何将单元格上方图片改为嵌入单元格内?

解决Laravel Excel导出图片悬浮在单元格上方的问题

要将图片从"悬浮在单元格上方"改为"嵌入单元格内",可以通过调整Drawing类的锚点类型、偏移量,同时配合设置单元格的行高列宽来实现,具体修改如下:

1. 修改drawings()方法,设置图片锚点与偏移

在创建Drawing对象后,添加锚点类型设置,让图片随单元格移动和缩放,同时调整偏移量使其贴合单元格内部:

use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;

public function drawings()
{
    $drawingCollection = [];        
    $row = 2;
    $column = 'G';

    foreach ($this->reportData as $data) {
        $drawing = new Drawing();
        $drawing->setName('MyImage');
        $drawing->setDescription('Description');
        if($data->{'Foto Toko Depan'})
        {
            $imagePath = storage_path('app/public/' . $data->{'Foto Toko Depan'});
            $drawing->setPath($imagePath);                
            $drawing->setHeight(20);
            $drawing->setWidth(20);
            $drawing->setCoordinates($column . $row);
            
            // 关键:设置锚点类型为随单元格移动和缩放
            $drawing->setAnchorType(Drawing::ANCHOR_MOVE_AND_SIZE);
            // 调整图片在单元格内的偏移量(可选,根据需求调整)
            $drawing->setOffsetX(3);
            $drawing->setOffsetY(3);
            
            $drawingCollection[] = $drawing;
        }
        $row++;
    }

    return $drawingCollection;
}

2. 设置单元格的行高与列宽

图片嵌入单元格后,需要匹配单元格的大小,避免显示混乱。通过registerEvents()方法添加事件,调整对应列的宽度和每行的高度:

use Maatwebsite\Excel\Events\AfterSheet;

public function registerEvents(): array
{
    return [
        AfterSheet::class => function(AfterSheet $event) {
            // 设置G列的宽度(根据图片宽度调整)
            $event->sheet->getColumnDimension('G')->setWidth(25);
            
            // 遍历数据,设置每行的行高(从第2行开始)
            foreach ($this->reportData as $index => $item) {
                $rowNum = $index + 2;
                $event->sheet->getRowDimension($rowNum)->setRowHeight(25);
            }
        },
    ];
}

原理说明

  • ANCHOR_MOVE_AND_SIZE锚点类型:让图片与绑定的单元格关联,单元格移动、调整大小时,图片会同步变化,实现"嵌入单元格"的效果。
  • 偏移量设置:让图片在单元格内留有适当边距,避免紧贴单元格边缘。
  • 行高列宽调整:确保单元格大小与图片尺寸匹配,避免图片超出单元格范围。

内容的提问来源于stack exchange,提问作者user12297722

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 19:30:34