首页 > 作文

PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)

更新时间:2023-04-08 05:33:52 阅读: 评论:0

今天接到了一个从excel内读取图片的需求,在网上查找了一些资料,基本实现了自己的需求,不过由于查到的一些代码比较久远,不能直接移植到自己的项目里,需要稍加改动一下。

这里介绍一下分别使用phpspreadsheet和phpexcel扩展库来实现读取excel内图片的功能:

phpspreadsheet

首先安装phpspreadsheet,由于线上服务器php版本是php5.6,所以需要安装兼容php5.6的版本,这里安装1.8.2版本

compor require phpoffice/phpspreadsheet=1.8.2

然后就可以在项目里使用了

u phpoffice\phpspreadsheet\cell\coordinate;u phpoffice\phpspreadsheet\iofactory;$imagefilepath = './uploads/imgs/'; //图片本地存储的路径if (!file_exists($imagefilepath)) { //如果目录不存在则递归创建 mkdir($imagefilepath, 0777, true);}try { $inputfilename = './files/1.xlsx'; //包含图片的excel文件 $objread = iofactory::createreader('xlsx'); $objspreadsheet = $objread->load($inputfilename); $objworksheet = $objspreadsheet->getsheet(0); $data = $objworksheet->toarray(); foreach ($objworksheet->getdrawingcollection() as $drawing) {  list($s天津中医药大学tartcolumn, $startrow) = coordinate::coordinatefromstring($drawing->getcoordinates());  $imagefilename = $drawing->getcoordinates() . mt_rand(1000, 9999);  switch ($drawing->getextension()) {   ca 'jpg':   ca 'jpeg':    $imagefilename .= '.jpg';    $source = imagecreatefromjpeg($drawing->getpath());    imagejpeg($source, $imagefilepath . $i启示 电影magefilename);    break;   ca 'gif':    $imagefilename .= '.gif';    $source = imagecreatefromgif($drawing->getpath());    imagegif($source, $imagefilepath . $imag科技素材efilename); 简单浪漫   break;   ca 'png':    $imagefilename .= '.png';    $source = imagecreatefrompng($drawing->getpath());    imagepng($source, $imagefilepath, $imagefilename);    break;  }  $startcolumn = abc2decimal($startcolumn);  $data[$startrow-1][$startcolumn] = $imagefilepath . $imagefilename; } dump($data);die();} catch (\exception $e) { throw $e;}public function abc2decimal($abc){ $ten = 0; $len = strlen($abc); for($i=1;$i<=$len;$i++){  $char = substr($abc,0-$i,1);//反向获取单个字符  $int = ord($char);  $ten += ($int-65)*pow(26,$i-1); } return $ten;}

可以看到,图片被读取并存到了本地服务器中

phpexcel

phpexcel实现从excel文件里读取内容的方法和phpspreadsheet几乎一样,毕竟phpspreadsheet就是在phpexcel基础上写的,不过phpexcel由于已经被废弃了,所以建议优先使用phpspreadsheet,如果原来项目里一直使用了phpexcel也可以继续使用phpexcel的方法

u phpexcel_iofactory;u phpexcel_cell;try { $inputfilename =浙江有哪些市 './files/1.xlsx'; $inputfiletype = phpexcel_iofactory::identify($inputfilename); $objreader = phpexcel_iofactory::createreader($inputfiletype); $objphpexcel = $objreader->load($inputfilename);} catch (\exception $e) { die('加载文件发生错误:"'.pathinfo($inputfilename,pathinfo_baname).'": '.$e->getmessage());}$sheet = $objphpexcel->getsheet(0);$data = $sheet->toarray(); //该方法读取不到图片,图片需单独处理$imagefilepath = './uploads/imgs/'; //图片本地存储的路径if (!file_exists($imagefilepath)) { mkdir($imagefilepath, 0777, true);}//处理图片foreach ($sheet->getdrawingcollection() as $img) { list($startcolumn, $startrow) = phpexcel_cell::coordinatefromstring($img->getcoordinates()); //获取图片所在行和列 $imagefilename = $img->getcoordinates() . mt_rand(1000, 9999); switch($img->getextension()) {  ca 'jpg':  ca 'jpeg':   $imagefilename .= '.jpeg';   $source = imagecreatefromjpeg($img->getpath());   imagejpeg($source, $imagefilepath.$imagefilename);   break;  ca 'gif':   $imagefilename .= '.gif';   $source = imagecreatefromgif($img->getpath());   imagejpeg($source, $imagefilepath.$imagefilename);   break;  ca 'png':   $imagefilename .= '.png';   $source = imagecreatefrompng($img->getpath());   imagejpeg($source, $imagefilepath.$imagefilename);   break; } $startcolumn = abc2decimal($startcolumn); $data[$startrow-1][$startcolumn] = $imagefilepath . $imagefilename;}var_dump($data);public function abc2decimal($abc){ $ten = 0; $len = strlen($abc); for($i=1;$i<=$len;$i++){  $char = substr($abc,0-$i,1);//反向获取单个字符  $int = ord($char);  $ten += ($int-65)*pow(26,$i-1); } return $ten;}

总结

以上所述是www.887551.com给大家介绍的php读取excel内的图片,希望对大家有所帮助

本文发布于:2023-04-08 05:33:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/42ce1d3fc5967477ecdefb07034b9a85.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库).doc

本文 PDF 下载地址:PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库).pdf

标签:图片   自己的   版本   文件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图