php导入excel安全设置,php之Excel导入导出

今天写这个博客呢?

第一是为了日后需要用到的时候方便找到 不用去翻以前的项目找代码。

第二是为了帮助不会的同行们解决一下Excel导入导出的问题。

#提示:Excel关键类下载地址在最下面哦。

所有代码都是在Thinkphp5中写的,使用起来不限于tp5哦,其他地方使用大同小异。

一、导入Excel。

1、我们导入excel是不是得先上传文件到服务器呢?

这个上传我们就不举例了,因为上传的方式很多。

上传之后我们把上传文件在服务端的路径返回先保存起来。

2、下面是我在Thinkphp5中写好的一个导入的处理方法,大家可以看一下。

/**

* 批量导入

*/

public function uploadExcel(){

$filename = "./public/upload/file/123.xls"; //服务端excel文件位置

if(extend($filename) == 'xls'){

import("Excel.PHPExcel.Reader.Excel5");

$PHPReader = new \PHPExcel_Reader_Excel5(); //获取对应实例

}else if(extend($filename) == 'xlsx'){

import("Excel.PHPExcel.Reader.Excel2007");

$PHPReader=new \PHPExcel_Reader_Excel2007(); //获取对应实例

}

//载入文件

$PHPExcel=$PHPReader->load($filename);

//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推

$currentSheet=$PHPExcel->getSheet(0);

//获取总列数

$allColumn=$currentSheet->getHighestColumn();

//获取总行数

$allRow=$currentSheet->getHighestRow();

//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始

for($currentRow=1;$currentRow<=$allRow;$currentRow++){

//从哪列开始,A表示第一列

for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){

//数据坐标

$address=$currentColumn.$currentRow;

//读取到的数据,保存到数组$arr中

$data[$currentRow][$currentColumn]=$currentSheet->getCell($address)->getValue();

}

}

$add = array();

$time = getTime(); //获取当前时间

foreach($data as $k=>$v){

$add[$k]['code'] = $v['A'];

$add[$k]['time'] = $time;

}

if(!empty($add)){

db("pretty_code")->insertAll($add); //插入数据库

}

if(is_file($filename)){

unlink($filename);

}

$this->success("导入成功",url("index"));

}

二、Excel的导出。

1、首先我们把需要导出的数据组装起来(二维的数据哦)。

2、设置好表头。

3、设置好导出的文件名。

#提示:  组装的数据顺序记得和表头对应哦。

最后就一起交给第二个写好的方法吧。

/**

* 导出对应记录

*/

public function ExportShop(){

$whe = '';

$info = db('shops_admin')

->where($whe)

->order("id desc")

->field("id,account_number,username,password")

->select();

if(empty($info[0])){

echo "";

}

$head = array(

'序号',

'账号',

'用户名',

'密码',

);

$fileName = '店铺记录表';

$this ->getExcel($fileName, $head, $info);

}

这个方法没什么说的,要用到的地方直接复制黏贴吧!

#提示:  唯一需要我们注意的地方就是,要正确的引入用到的类库哦。

/**

* 导出excel文件

* @param $fileName 导出的文件命名

* @param $headArr 表头

* @param $data 需要导出的数据

*/

public function getExcel($fileName,$headArr,$data){

//导入PHPExcel类库

import("Excel.PHPExcel");

import("Excel.PHPExcel.Writer.Excel5");

import("Excel.PHPExcel.IOFactory.php");

$date = date("Y_m_d",time());

$fileName .= "_{$date}.xls";

//创建PHPExcel对象,注意,不能少了\

$objPHPExcel = new \PHPExcel();

$objProps = $objPHPExcel->getProperties();

//设置表头

$key = ord("A");

foreach($headArr as $v){

$colum = chr($key);

$objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);

$key += 1;

}

$column = 2;

$objActSheet = $objPHPExcel->getActiveSheet();

//print_r($data);exit;

foreach($data as $key => $rows){ //行写入

$span = ord("A");

foreach($rows as $keyName=>$value){// 列写入

$j = chr($span);

$objActSheet->setCellValue($j.$column, $value);

$span++;

}

$column++;

}

$fileName = iconv("utf-8", "gb2312", $fileName);

//重命名表

//$objPHPExcel->getActiveSheet()->setTitle('test');

//设置活动单指数到第一个表,所以Excel打开这是第一个表

$objPHPExcel->setActiveSheetIndex(0);

header('Content-Type: application/vnd.ms-excel');

header("Content-Disposition: attachment;filename=\"$fileName\"");

header('Cache-Control: max-age=0');

$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

$objWriter->save('php://output'); //文件通过浏览器下载

exit;

}

以下是对应类库的码云地址:

是不是很实用呢?

看完记得点个赞哦。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值