比如遇到导入商品列表进数据库,商品某一栏含有图片logo,这是可以采用下面这样进行导入处理,重写import 方法
$file = $this->request->request('file');if (!$file) { $this->error(__('Parameter %s can not be empty', 'file'));}$inputFileName = ROOT_PATH . DS . 'public' . DS . $file;if (!is_file($inputFileName)) { $this->error(__('No results were found'));}//实例化reader$ext = pathinfo($inputFileName, PATHINFO_EXTENSION);if (!in_array($ext, ['xls'])) { $this->error(__('Unknown data format'));}$reader = new Xls();// 读取excel文件try { if (!$PHPExcel = $reader->load($inputFileName)) { $this->error(__('Unknown data format')); } $sheet = $PHPExcel->getSheet(0);} catch(Exception $e) { die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());}$data=$sheet->toArray();//该方法读取不到图片 图片需单独处理/*************图片单独处理开始*****************/$imageFilePath=ROOT_PATH.'/public/uploads/images/' ;//图片保存目录if (!file_exists ( $imageFilePath )) { mkdir("$imageFilePath", 0777, true);}//处理图片foreach($sheet->getDrawingCollection() as $img) { list($startColumn,$startRow)= PHPExcel_Cell::coordinateFromString($img->getCoordinates());//获取图片所在行和列 $imageFileName = Random::uuid(); switch($img->getMimeType()) { case 'image/jpg': case 'image/jpeg': $imageFileName.='.jpg'; imagejpeg($img->getImageResource(),$imageFilePath.$imageFileName); break; case 'image/gif': $imageFileName.='.gif'; imagegif($img->getImageResource(),$imageFilePath.$imageFileName); break; case 'image/png': $imageFileName.='.png'; imagepng($img->getImageResource(),$imageFilePath.$imageFileName); break; } $startColumn = ABC2decimal($startColumn);//由于图片所在位置的列号为字母,转化为数字 $data[$startRow-1][$startColumn]='/uploads/images/'.$imageFileName;//把图片插入到数组中}/*************图片单独处理结束*****************///可以再这里打印 $data 会发现图片已经上传,图片一栏的值是图片地址,后面自己进行数据组装调整插入数据库就可以了。
有些 类需要自己导入,需要注意下
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。