PHPExcel读取EXCEL中的图片并保存到本地

PHPExcel是PHP语言操作Excel文件最强大的一个工具,也是身为一个PHPer的必备技能。本课程将带领大家全面解析PHPexcel的导入导出、样式控制、图形报表操作,帮助大家在今后工作中玩转任何文件操作需求

PHPExcel的下载与安装

获取的方法有很多种

直接下载
下载地址:https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8

下载后,解压到项目目录,在项目中引入PHPExcel类即可以使用(手动引用)

 

通过Git来下载
通过Git 从Github上获取PHPExcel,获取后,在项目中需要手动引入

Git地址:https://github.com/PHPOffice/PHPExcel

 

通过Composer 进行安装

首先要有安装composer,然后执行命令:

composer require phpoffice/phpexcel

通过Composer 安装后,会自动生成自动加载文件

对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件。你可以简单的引入这个文件,你会得到一个免费的自动加载支持。

require ‘vendor/autoload.php’;

下载源码解压后

PHPExcel读取EXCEL中的图片并保存到本地

在根目录创建一个test.php用来读取excel的内容 excel文件的内容如下:

PHPExcel读取EXCEL中的图片并保存到本地

简单的测试,test.php代码如下

<?php
header("content-type:text/html;charset=utf8");
include './Classes/PHPExcel/IOFactory.php';//引入PHPExcel类
$inputFileName = './test.xls';//读取的excel文件
date_default_timezone_set('PRC');
// 读取excel文件
try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}
$sheet = $objPHPExcel->getSheet(0);
$data=$sheet->toArray();//该方法读取不到图片 图片需单独处理
$imageFilePath='./images/'.date('Y-m-d').'/';//图片在本地存储的路径
if (! file_exists ( $imageFilePath )) {
    mkdir("$imageFilePath"0777true);
}
//处理图片
foreach($sheet->getDrawingCollection() as $img) {
list($startColumn,$startRow)= PHPExcel_Cell::coordinateFromString($img->getCoordinates());//获取图片所在行和列
    $imageFileName = $img->getCoordinates() . mt_rand(100999);
switch($img->getMimeType()) {
case 'image/jpg':
            $imageFileName.='.jpg';
            imagejpeg($img->getImageResource(),$imageFilePath.$imageFileName);
break;
case 'image/gif':
            $imageFileName.='.gif';
            imagegif($img->getImageResource(),$imageFilePath.$imageFileName);
break;
case 'image/png':
            $imageFileName.='.png';
            imagepng($img->getImageResource(),$imageFilePath.$imageFileName);
break;
    }
    $startColumn = ABC2decimal($startColumn);//由于图片所在位置的列号为字母,转化为数字
    $data[$startRow-1][$startColumn]=$imageFilePath.$imageFileName;//把图片插入到数组中

}
print_r($data);die

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;
}
以上代码只是处理图片,得到图片路径插入到数组中,如需数据入库,可循环insert,
自行处理

打印结果效果图如下:
 

PHPExcel读取EXCEL中的图片并保存到本地

未经允许不得转载:PHP100中文网 - 中国第一档PHP资源分享门户 » PHPExcel读取EXCEL中的图片并保存到本地

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏