php使用excel表格数据处理,PHP通过PHPExcel实现Excel表格数据的导入

favicon.ico摘要:数据导入导出在项目应用中也是一项比较常用的功能,它可以为我们做数据统计分析、数据录入节省大量的时间,今天就来讲下通过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

20191019_1571452814492747.jpg

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表格数据倒入保存到数组后就可以根据业务逻辑随意处理了:

20191019_1571453094993565.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值