分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

php批量导入带有图片的Excel表格

发布时间:2023-09-06 01:10责任编辑:熊小新关键词:暂无标签
<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: 流年 <liu21st@gmail.com>// +----------------------------------------------------------------------// 应用公共文件define(‘EXCEL_EXTENSION_2003‘, "xls");define(‘EXCEL_EXTENSION_2007‘, "xlsx");/** * 处理Excel中图片 * * @param string $file_name 文件名 * @param string $full_path 文件完整路径 */function process_excel_image($file_name, $full_path){    // 引入PHPEXCEL类    import(‘PHPExcel_IOFactory‘, EXTEND_PATH . "PhpExcel/PHPExcel/");    import(‘PHPExcel‘, EXTEND_PATH . "PhpExcel/");    // 判断文件版本,选择对应的解析文件    if(getExtendFileName($file_name) == EXCEL_EXTENSION_2003)    {        $reader = \PHPExcel_IOFactory::createReader(‘Excel5‘);    }    else if(getExtendFileName($file_name) == EXCEL_EXTENSION_2007)    {        $reader = new \PHPExcel_Reader_Excel2007();    }    // 解析Excel文件    //                 $objPHPExcel = $objReader->load(ROOT_PATH . "public/uploads/" . $file_path);    $PHPExcel = $reader->load($full_path);    $worksheet = $PHPExcel->getActiveSheet();    $imageInfo = extractImageFromWorksheet($worksheet, ROOT_PATH . "public/uploads/school/");    return $imageInfo;}/** * 返回文件路径的信息 * * @param string $file_name * @return string */function getExtendFileName($file_name) {         $extend = pathinfo($file_name);    $extend = strtolower($extend["extension"]);    return $extend;}/** * worksheet中提取image * * @param object $worksheet * @param string $basePath */function extractImageFromWorksheet($worksheet,$basePath){         $result = array();         $imageFileName = "";         foreach ($worksheet->getDrawingCollection() as $drawing) {        $xy=$drawing->getCoordinates();        $path = $basePath;        // for xlsx        if ($drawing instanceof \PHPExcel_Worksheet_Drawing) {                         $filename = $drawing->getPath();                         $imageFileName = $drawing->getIndexedFilename();                         // process imageFileName            $tmp = explode(".", $imageFileName);            $tmp[0] = md5(microtime(true));            $tmp_fileName = implode(".", $tmp);            // process imageFileName                //                 $path = $path . $drawing->getIndexedFilename();            $path = $path . $tmp_fileName;                         $boo = copy($filename, $path);                         $result[$xy] = $path;                         // for xls        } else if ($drawing instanceof \PHPExcel_Worksheet_MemoryDrawing) {                         $image = $drawing->getImageResource();                         $renderingFunction = $drawing->getRenderingFunction();                         switch ($renderingFunction) {                                 case \PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG:                                         $imageFileName = $drawing->getIndexedFilename();                    $path = $path . $drawing->getIndexedFilename();                    imagejpeg($image, $path);                    break;                                     case \PHPExcel_Worksheet_MemoryDrawing::RENDERING_GIF:                    $imageFileName = $drawing->getIndexedFilename();                    $path = $path . $drawing->getIndexedFilename();                    imagegif($image, $path);                    break;                                     case \PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG:                    $imageFileName = $drawing->getIndexedFilename();                    $path = $path . $drawing->getIndexedFilename();                    imagegif($image, $path);                    break;                                     case \PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT:                    $imageFileName = $drawing->getIndexedFilename();                    $path = $path . $drawing->getIndexedFilename();                    imagegif($image, $path);                    break;            }            $result[$xy] = $imageFileName;        }    }    return $result;}



控制器:

public function upload_image()    {        $params = input(‘param.‘);                if ($this->request->method() == "POST") {            // 获取表单上传文件 例如上传了001.jpg            $file = request()->file(‘excel‘);            // 移动到框架应用根目录/public/uploads/ 目录下            $info = $file->validate([                ‘size‘=>5242880,                ‘ext‘=>‘xls,xlsx,csv‘            ])->move(ROOT_PATH . ‘public‘ . DS . ‘uploads‘);            if ($info){                // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg                // $saveName =  $info->getSaveName();                $file_path = $info->getSaveName();                $file_name = $info->getFileName();                    // 引入PHPEXCEL类                import(‘PHPExcel_IOFactory‘, EXTEND_PATH . "PhpExcel/PHPExcel/");                import(‘PHPExcel‘, EXTEND_PATH . "PhpExcel/");                // 判断文件版本,选择对应的解析文件                if(getExtendFileName($file_name) == EXCEL_EXTENSION_2003)                {                    $reader = \PHPExcel_IOFactory::createReader(‘Excel5‘);                }                else if(getExtendFileName($file_name) == EXCEL_EXTENSION_2007)                {                    $reader = new \PHPExcel_Reader_Excel2007();                }                    // 解析Excel文件                // $objPHPExcel = $objReader->load(ROOT_PATH . "public/uploads/" . $file_path);                $PHPExcel = $reader->load(ROOT_PATH . "public/uploads/" . $file_path);                $worksheet = $PHPExcel->getActiveSheet();                $imageInfo = extractImageFromWorksheet($worksheet, ROOT_PATH . "public/uploads/20170902/");                    var_dump($imageInfo);            }else{                // 上传失败获取错误信息                return $this->error($file->getError());            }        } else {            return $this->fetch();        }    }


引入PHPEXCEL类库:

650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/A5/11/wKioL1m3V4CxI851AAEEV3wocLs594.jpg" title="PHPEXCEL1.8.jpg" alt="wKioL1m3V4CxI851AAEEV3wocLs594.jpg" />


本文出自 “为了以后” 博客,谢绝转载!

php批量导入带有图片的Excel表格

原文地址:http://tengteng412.blog.51cto.com/4751263/1964539

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved