部署类库
下载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来上传图片,会出现一系列错误的……