php 数组 excel,PHPExcel+layui上传excel文件并解析成数组

前端代码

上传excel

上传文件

layui.use(['form','upload'],function(){

var form=layui.form;

var upload=layui.upload;

upload.render({ //允许上传的文件后缀

elem: '#myfile'

,url: "{:url('zhoubian/do_upload')}"

,accept: 'file' //普通文件

,exts: 'xls|excel|xlsx'

,done: function(res){

if(res.code===1){

layer.msg(res.msg,{icon:6});

}else{

layer.msg('解析失败',{icon:5});

}

}

});

form.on('submit(formsub)',function(data){

layer.msg('导入数据具体详情未协商确认,待确认后处理');

return false;

})

});

后台PHP接口

//导入excel接口,将数据放入缓存中

public function do_upload(){

$file=request()->file("file");

$info=$file->move(ROOT_PATH.'public'.DS . 'uploads'.DS."zhoubian");

$file_name="";

if($info){

$file_name = $info->getSaveName();

}else{

$this->error("错误,未获取到文件信息");

}

//引入文件

\think\Loader::import('PHPExcel.PHPExcel');

$objPHPExcel = new \PHPExcel();

$filename = ROOT_PATH.'public'.DS . 'uploads'.DS ."zhoubian".DS.$file_name;

$filename=iconv('GB2312','UTF-8',$filename);

if(is_file($filename)==false){

$this->error("未发现文件!");

}

$extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) );

\think\Loader::import('PHPExcel.IOFactory.PHPExcel_IOFactory');

//使用 PHPExcel_IOFactory 来鉴别文件应该使用哪一个读取类

$inputFileType = \PHPExcel_IOFactory::identify($filename);

$objReader = \PHPExcel_IOFactory::createReader($inputFileType);

//只设为读取,加快读取速度

$objReader->setReadDataOnly(true);

$objExcel = $objReader->load($filename);

$sheet = $objExcel->getSheet(0);

$highestRow = $sheet->getHighestRow();

// 取得总列数

$highestColumn = $sheet->getHighestColumn();

//循环读取excel文件,读取一条,插入一条

$excel_array=array();

//从第一行开始读取数据

for($j=1;$j<=$highestRow;$j++){

//从A列读取数据

for($k='A';$k<=$highestColumn;$k++){

// 读取单元格

$excel_array[$j][]=$objExcel->getActiveSheet()->getCell($k.$j)->getFormattedValue();

}

}

var_dump($excel_array);die();

//unset($excel_array[1]);

$data=[];

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

$data[$k]["store"]=$v["1"];

$data[$k]["goods"]=$v["5"];

}

//获取解析excel后的数组

$final_arr=$this->tongji($data);

if(!empty($final_arr)){

//设置快递excel的数据缓存

Cache::set("Kdexcel",$final_arr,6000);

$msg=[

'code'=>1,

'msg'=>"解析成功",

];

}else{

$msg=[

'code'=>0,

'msg'=>"解析失败!",

];

}

return json($msg);

}

注意点:

1.我用的TP5框架,PHPexcel放的目录如下图,把phpexcel的源码下下来后,放到extend扩展目录里面

ede175b5e2266e375d6e35fe1af5a67a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值