Welcome

首页 / 网页编程 / PHP / composer安装PHPExcel以及导入导出Excel

【tp5.1】composer安装PHPExcel以及导入\导出Excel

一、安装PHPExcel


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


2.解压后:Classes文件夹改名为PHPExcel 


3.把文件夹PHPExcel 放到根目录vendor文件夹下


 


二、控制器


1.调用PHPExcel


use PHPExcel_IOFactory;

use PHPExcel;

 


 


2.导入


复制代码

//    导入每日流水

    public function posImport(){

        header("content-type:text/html;charset=utf-8");

        //上传excel文件

        $file = request()->file('excel');

        //将文件保存到public/uploads目录下面

        $info = $file->validate(['size'=>1048576,'ext'=>'xls,xlsx'])->move( './uploads');

        if($info){

            //获取上传到后台的文件名

            $fileName = $info->getSaveName();

            //获取文件路径

            $filePath = Env::get('root_path').'public'.DIRECTORY_SEPARATOR.'uploads'.DIRECTORY_SEPARATOR.$fileName;

            //获取文件后缀

            $suffix = $info->getExtension();

            //判断哪种类型

            if($suffix=="xlsx"){

                $reader = \PHPExcel_IOFactory::createReader('Excel2007');

            }else{

                $reader = PHPExcel_IOFactory::createReader('Excel5');

            }

        }else{

            $this->error('文件过大或格式不正确导致上传失败-_-!');

        }

        //载入excel文件

        $excel = $reader->load("$filePath",$encode = 'utf-8');

        //读取第一张表

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

        //获取总行数

        $row_num = $sheet->getHighestRow();

        //获取总列数

        $col_num = $sheet->getHighestColumn();

        $data = []; //数组形式获取表格数据

        for ($i = 2; $i <= $row_num; $i ++) {

            $data[$i]['code']  = $sheet->getCell("A".$i)->getValue();

            $data[$i]['last_code']  = substr($sheet->getCell("A".$i)->getValue(),-6);

            $time = date('Y-m-d H:i',\PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell("B".$i)->getValue()));

            $data[$i]['time'] = strtotime($time);

            //将数据保存到数据库

        }

        $res = Db::name('pos_code')->insertAll($data);

        if($res){

            return redirect('/admin/pos/posCodeLog');

        }else{

            $return = [

                'code'  =>  0,

                'msg'   =>  '提交失败,请刷新重试'

            ];

            return json($return);

        }

    }

复制代码

 


3.导出


复制代码

//    导出excel

    private function outExcel($data){

        $objExcel = new PHPExcel();

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

        $objActSheet = $objExcel->getActiveSheet(0);

        $objActSheet->setTitle('领取报表');//设置excel的标题

        $objActSheet->setCellValue('A1','用户id');

        $objActSheet->setCellValue('B1','红包金额(元)');

        $objActSheet->setCellValue('C1','时间');

        $objActSheet->setCellValue('D1','发放状态');


        $baseRow = 2; //数据从N-1行开始往下输出 这里是避免头信息被覆盖

        foreach ( $data as $r => $d ) {

            $i = $baseRow + $r;

            $objExcel->getActiveSheet()->setCellValue('A'.$i,$d['user_id']);

            $objExcel->getActiveSheet()->setCellValue('B'.$i,$d['price']);

            $objExcel->getActiveSheet()->setCellValue('C'.$i,$d['create_time']);

            $objExcel->getActiveSheet()->setCellValue('D'.$i,$d['status'] == 1 ? '成功' : '失败');

        }

        $objExcel->setActiveSheetIndex(0);

        //4、输出

        $objExcel->setActiveSheetIndex();

        header('Content-Type: applicationnd.ms-excel');

        $time=date('Y-m-d');

        header("Content-Disposition: attachment;filename=领取报表$time.xls");

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

        $objWriter->save('php://output');

    }

前端

  <div><form action="/index/index/posImport" method="post" enctype="multipart/form-data">

    <input type="file" name="inputExcelclass" id="inputExcelclass"/>

    <input type="submit" name="submit" value="Submit"/>

  </form></div>

【tp5.1】composer安装PHPExcel以及导入_导出Excel - 李文和 - 博客园.png