Laravel excel可以导入图片吗?

让PHP再次伟大
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

之前我也想用 Laravel excel 导入图片,发现做不到,最后用这个导入的 phpspreadsheet.readthedocs.io/en/l... file

2年前 评论
天衣有缝 (作者) 2年前
勇敢的心 (楼主) 2年前
勇敢的心 (楼主) 2年前
天衣有缝 (作者) 2年前
skies 2年前
wdnmd 2年前
laravel176 1年前
oceanjiayu 11个月前
laravel176 11个月前
oceanjiayu 11个月前
讨论数量: 28

同求答案

2年前 评论
勇敢的心 (楼主) 2年前
oceanjiayu 11个月前
勇敢的心 (楼主) 11个月前
oceanjiayu 11个月前
勇敢的心 (楼主) 11个月前
oceanjiayu 11个月前

之前我也想用 Laravel excel 导入图片,发现做不到,最后用这个导入的 phpspreadsheet.readthedocs.io/en/l... file

2年前 评论
天衣有缝 (作者) 2年前
勇敢的心 (楼主) 2年前
勇敢的心 (楼主) 2年前
天衣有缝 (作者) 2年前
skies 2年前
wdnmd 2年前
laravel176 1年前
oceanjiayu 11个月前
laravel176 11个月前
oceanjiayu 11个月前

没有这个功能,需要自己实现 :joy: github.com/Maatwebsite/Laravel-Exc...

2年前 评论
勇敢的心 (楼主) 2年前

是可以导出的,参考下 这个文档 docs.laravel-excel.com/3.1/exports...

2年前 评论
勇敢的心 (楼主) 2年前
OrangBus

我用的是phpoffice插入的,大概是这样:

 $spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet(0);
$sheet->setTitle($user->username); //tab 标题

$sheet->mergeCells('A1:E1');
$sheet->setCellValue('A1', "职业技能等级认定准考证");

$sheet->setCellValue('A2', "姓 名");
$sheet->setCellValue('B2', $user['username']);
$sheet->setCellValue('C2', "性 别");
$sheet->setCellValue('D2', $user->sex == 1 ? "男": "女");

if (!is_null($user['avatar']) && file_exists($this->getPublicPath($user['avatar']))){
            $drawing = new Drawing();
            $drawing->setName($user->username);
            //$avatar = str_replace("\\","/", app()->getRootPath()."public/storage/student/53012600.png"); //示例
            $drawing->setPath($this->getPublicPath($user['avatar'])); //需要一个服务器上的完成路径:

            $drawing->setWidth("130");
            $drawing->setHeight("125");
            $drawing->setOffsetX(3); // 图片横向偏移
            $drawing->setOffsetY(3); // 图片纵向偏移

            $drawing->setCoordinates("E2"); // 插入位置
            $drawing->setWorksheet($sheet);
   }else{
            $sheet->setCellValue('E2', "无");
}

// ...code
2年前 评论
勇敢的心 (楼主) 2年前
勇敢的心 (楼主) 2年前
OrangBus (作者) 2年前

:smile: 百度一下。

2年前 评论
return [
            BeforeSheet::class => function (BeforeSheet $sheet) {
                $reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
                // 将文件读取到到$spreadsheet对象中
                $spreadsheet = $reader->load(storage_path('app/public/') . request()->input('file'));
                // 获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
                $worksheet = $spreadsheet->getSheet(0);
                // 该变量可判断excel中是否有图片,如果有图片则进入循环
                if ($allImage = $worksheet->getDrawingCollection()) {
                    foreach ($allImage as $drawing) {
                        //获取excel中的图片,转成二进制流
                        $filename = $drawing->getPath();
                        $imageData = file_get_contents($filename);
                        //获取二进制流图片格式,返回true就是能识别的图片
                        if ($type = getimagesizefromstring($imageData)) {
                            $base64String = 'data:' . $type['mime'] . ';base64,' . base64_encode($imageData);
                            // 写进表格中
                            $sheet->sheet->setCellValue($drawing->getCoordinates(), $base64String);
                        }
                    }
                }
            }
        ];

根据上面老哥写法,改了下就可以兼容下。

11个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!