首页 > 作文

PHP读取Excel内的图片

更新时间:2023-04-07 21:58:36 阅读: 评论: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($startcolumn, $startrow) = coordinate::coordinatefromstring($drawing->getcoordinates());        $imagefilename = $drawing->getcoordinates() . mt_rand(1林清玄经典语录000, 9999);        switch ($drawing->getextension()) {            ca 'jpg':            ca 'jpeg':                $imagefilename .= '.jpg';                $source = imagecreatefromjpeg($drawing->getpath());                imagejpeg($source, $imagefilepath . $imagefilename);                break;            ca 'gif':                $imagefilename .= '.gif';                $source = imagecreatefromgif($drawing->getpath());                imagegif($source, $imagefilepath . $imagefilename);                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 = imagecreatefromjp司法局长eg($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;}

参考文章:

phpexcel数据导入(含图片)

phpspreadsheet 导入图片功能

本文发布于:2023-04-07 21:58:35,感谢您对本站的认可!

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

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

本文word下载地址:PHP读取Excel内的图片.doc

本文 PDF 下载地址:PHP读取Excel内的图片.pdf

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