PhpSpreadsheet 导出 excel,图片怎么以网络图片形式导出?
求助
PhpSpreadsheet

PhpSpreadsheet 导出 excel,图片怎么以网络图片形式导出?直接写绝对路径会把图片内嵌到excel中,文件太大,直接写域名会卡死,大家是怎么解决的?

已采纳
jayip
jayip
-
1年前
//图片读取与存储
$draws = $sheet->getDrawingCollection();//获取所有图像
$imageFilePath = 'uploads/';
foreach ($draws as $drawing) {//$drawing 为 PhpOffice\PhpSpreadsheet\Worksheet\Drawing类的实例;
    $coordi = $drawing->getCoordinates();//获取图像坐标 eg A4
    list($startColumn, $startRow) = PhpOffice\PhpSpreadsheet\Cell\Coordinate::coordinateFromString($coordi);//拆分成 ['A','4'];
    $imageFileName = $imageFilePath.$coordi.'_'. mt_rand(1000, 9999);
    switch ($drawing->getExtension()) {
        case 'jpg':
        case 'jpeg':
            $imageFileName .= '.jpg';
            $source = imagecreatefromjpeg($drawing->getPath());
            $res = imagejpeg($source,  $imageFileName);
            break;
        case 'gif':
            $imageFileName .= '.gif';
            $source = imagecreatefromgif($drawing->getPath());
            imagegif($source,  $imageFileName);
            break;
        case 'png':
            $imageFileName .= '.png';
            $source = imagecreatefrompng($drawing->getPath());
            $res = imagepng($source, $imageFileName);
            break;
    }
}

//图像写入操作
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing->setWorksheet($sheet);
$drawing->setPath(dirname(__FILE__).'/'.$imageFileName);
$drawing->setWidth(200);//图片宽
$drawing->setHeight(200);//图片高
$drawing->setOffsetX(100);//设置图片偏移量
$drawing->setCoordinates('A5');//将图片放置于单元格
runtom
runtom回复jayip
这家伙很懒,什么也没写~
1年前

如果图片多,这样做导出的文件是不是会很大?有没有可能像在html中一样只放一个链接显示图片?

jayip
jayip回复runtom
-
1年前

可以的啊,数据库里存的就是图片名称

runtom
runtom回复jayip
这家伙很懒,什么也没写~
1年前

谢谢

1个回答默认排序 投票数排序
钝角
钝角
尊嘟假嘟O.o?
1年前

个人认为这个问题与 导出excel的PhpSpreadsheet如想导出做一些处理 这篇帖子,有一定相似之处,我想到了一个通用的解决方案,现没有时间实现,这里我提供一下思路,如果题主做出来了望踢我一脚😃

jayip
jayip回复钝角
-
1年前

对的,就是在数据识别加一些不同的值,针对性处理
是这样的思路

runtom
runtom回复钝角
这家伙很懒,什么也没写~
1年前

那怎么在excel中以图片的形式展示?使用excel二次处理吗?

jayip
jayip回复runtom
-
1年前

想在里面直接显示图片吗

请先登录
0
1
1
8