php获取excel中的图片,可本地保存或入库

部署类库

下载PHPExcel类库文件:https://github.com/joytom/phpexcel
放入extend自定义扩展类:
在这里插入图片描述
在这里插入图片描述

代码实现

index.php控制器:

<?php
namespace app\index\controller;
use think\Controller;
use think\Loader;
use think\Db;
use think\Request;
use PHPExcel;
use PHPExcel_IOFactory;
use PHPExcel_Cell;
class Index extends Controller
{
    public function index()
    {
    	if(isset($_POST['sub']))
    	{
	    	Loader::import('PHPExcel.PHPExcel');
	        Loader::import('PHPExcel.PHPExcel.PHPExcel_IOFactory');
	        Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell');
	        
	        //从前台获取excel文件
	        $file = request()->file('file');

	        //上传该文件
	        $path = ROOT_PATH . 'public' . DS . 'uploads\images' . DS;
	        $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads/images');//上传位置
	        if($info){
	        	echo '文件上传成功'.'<br/>';
	        }
	        else{
	        	echo '文件上传失败'.'<br/>';
	        }

	        //上传后的EXCEL路径
	        $file_path = $path . $info->getSaveName();

	        //设置一个存放图片的路径
	        $imgPath = 'D:\phpStudy\student\tp_ceshi\public\uploads\images';
	        if(!file_exists($imgPath)){
	            mkdir($imgPath);
	        }

	        //获取文件后缀:xls、xlsx等
	        $extension = strtolower(pathinfo($file_path, PATHINFO_EXTENSION) );
	        //加上这个判断的目的就是防止报错,但目前只支持Excel5
			if($extension =='xls'){
				$objReader = PHPExcel_IOFactory::createReader('Excel5');
			}else{
				$objReader = PHPExcel_IOFactory::createReader('excel2007'); 
			}

			//载入文件
	        $objPHPExcel = $objReader->load($file_path);  
	        foreach ($objPHPExcel->getSheet(0)->getDrawingCollection() as $k => $drawing) {
	                $codata = $drawing->getCoordinates(); //得到单元数据 比如G2单元
	                $filename = $drawing->getIndexedFilename();  //文件名

	                //如果多张图片,就存入数组
	                $filenames[]=$imgPath.'123'.$filename;
	                echo $filename."<br/>";
	                ob_start();
	                call_user_func(
	                    $drawing->getRenderingFunction(),
	                    $drawing->getImageResource()
	                );
	                $imageContents = ob_get_contents();
	                file_put_contents($imgPath.'123'.$filename,$imageContents); //把图片保存到本地(上方自定义的路径)
	                ob_end_clean();
	        }
	        print_r($filenames);
	        die;
       	}
       	else
       	{
       		return view('index');
       	}
    }

}


index.html视图:

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
    <input type="file" name="file" /><br>
    <input type="submit" name="sub" value="提交" />
</form>
</body>
</html>

效果展示

在这里插入图片描述

友情提示:

注意注意注意!!!大坑!大坑!大坑!

进过一番查阅,phpexcel获取图片现在貌似只支持Excel5的,而不支持excel2007,你上传的文件代码会判断你这个文件是属于Excel5的还是excel2007的,要找一个19年之前的excel文件来上传进行测试!

如果你用excel2007来上传图片,会出现一系列错误的……

猜你喜欢

转载自blog.csdn.net/qq_42249896/article/details/87862565
今日推荐