本文作者:心月

PHP通过PHPExcel实现Excel表格数据的导入

心月IT博客 2019-10-19
PHP通过PHPExcel实现Excel表格数据的导入摘要:数据导入导出在项目应用中也是一项比较常用的功能,它可以为我们做数据统计分析、数据录入节省大量的时间,今天就来讲下通过PHPExcel实现Excel表格数据的导入。PHPExcel是一个PHP类库,用来帮助我们简单、高效实现从Excel读取Excel的数据和导出数据到Excel。

        数据导入导出在项目应用中也是一项比较常用的功能,它可以为我们做数据统计分析、数据录入节省大量的时间,今天就来讲下通过PHPExcel实现Excel表格数据的导入。

        PHPExcel是一个PHP类库,用来帮助我们简单、高效实现从Excel读取Excel的数据和导出数据到Excel。


1、PHPExcel类库引入

       PHPExcel 在项目中并不能直接使用,需要先将它引入项目中,通过composer或者直接将PHPExcel类库的源码放到项目中。(在项目中我们真正需要的只有Classes里面的文件)

PHPExcel下载:https://github.com/PHPOffice/PHPExcel.git

PHPExcel类库

2、处理导入的Excel表格

        Excel表格文件可以通过form表单上传,这里就不细说了,直接从表格数据处理开始

<?php
header("content-type:text/html;charset=utf8");
var_dump($_FILES);
include 'PHPExcel/PHPExcel/IOFactory.php';//引入PHPExcel类
$inputFileName = $_FILES['file']['tmp_name'];//读取的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);

//将Excel表的所有文本数据保存到数组中
$data=$sheet->toArray();  

//如果导入的Excel数据表中有需要处理的图片
//下面是对图片进行处理
$imageFilePath='./images/'.date('Y-m-d').'/';//图片在本地存储的路径
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(100, 999);
    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;
}

Excel表格数据倒入保存到数组后就可以根据业务逻辑随意处理了:

Excel表格数据保存到数组


文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2019-10-19
若转载请注明原文及出处:https://www.xinyueseo.com/other/420.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论