thinkphp usa PHPExcel para importar y exportar

Actualmente, la exportación de Excel se utiliza en muchos escenarios. Ahora, los pasos de implementación de la función de exportación de Excel se explican en detalle junto con el marco ThinkPHP5.0.

1-Preparativos preliminares:

  • Descargue el paquete PHPExcel
  • Proporcione la dirección de descarga: https://github.com/helloworldmy007/PHPExcel
  • Ponlo en la carpeta del proveedor de nuestro tp.

2- Realización de funciones de importación

Visualización del código de front-end:

<form action="{:url('daoru')}" enctype="multipart/form-data" method="post">
	<div class="layui-upload">
  		<button type="button" class="layui-btn layui-btn-normal" id="test8">选择文件</button>
  		<button type="button" class="layui-btn" id="test9">开始导入到数据库</button>
	</div>
 </form>

Necesidad de introducir el
código js del plugin layui

<script>
    layui.use('upload', function(){
        var $ = layui.jquery
            ,upload = layui.upload;

        //选完文件后不自动上传
        upload.render({
            elem: '#test8'
            ,exts: 'xlsx|xls' //只允许上传压缩文件
            ,url: '/index.php/index/index/daoru'
            ,auto: false
            //,multiple: true
            ,bindAction: '#test9'
            ,done: function(res){
            console.log(res)
            if(res.code == 1) {
                layer.msg(res.msg, {'icon': 1});
                setTimeout(function () {
                    parent.window.location.reload();
                }, 1000);
            } else {
                layer.msg(res.msg);
            }

        }
    });

    });
</script>

3- código de fondo

public function daoru(){
        if($this->request->isPost()){
            $file = $this->request->file('file');
            // 移动到框架应用根目录/public/uploads/ 目录下
            $info = $file->move(ROOT_PATH . 'public' .DS.'upload'. DS . 'excel');
            if($info){
                //获取文件所在目录名
                $path=ROOT_PATH . 'public' . DS.'upload'.DS .'excel/'.$info->getSaveName();
                //加载PHPExcel类
                vendor('PHPExcel.PHPExcel');
                //实例化PHPExcel类(注意:实例化的时候前面需要加'\')
                $extension = $info->getExtension();
                if($extension =='xlsx')
                {
                    $objReader = new \PHPExcel_Reader_Excel2007();
                }else
                {
                    $objReader = new \PHPExcel_Reader_Excel5();
                }
                $objPHPExcel = $objReader->load($path,$encode='utf-8');//获取excel文件
                $sheet = $objPHPExcel->getSheet(0); //激活当前的表
                $highestRow = $sheet->getHighestRow(); // 取得总行数
                $highestColumn = $sheet->getHighestColumn(); // 取得总列数
                $a=0;
                //将表格里面的数据循环到数组中
                for($i=2;$i<=$highestRow;$i++)
                {
                    //*为什么$i=2? (因为Excel表格第一行是标题,从第二行开始,才是我们要的数据。)
                    $data[$a]['id'] = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();//id
                    $data[$a]['adminname'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
                    $data[$a]['status'] = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
                    $data[$a]['icon'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
                    $data[$a]['password'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
                    $data[$a]['up_time'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
                    $data[$a]['addtime'] = $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
                    $data[$a]['delete'] = $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
                    // 这里的数据根据自己表格里面有多少个字段自行决定
                    $a++;
                }
                //往数据库添加数据
                //dump($data);
                $aa = Db('admins')->insertAll($data);
                if($aa){
                    $res['code']=1;
                    $res['msg'] = '导入成功!';
                }else{
                    $res['code']=0;
                    $res['msg'] = '导入失败!';
                }
                return $res;
            }

        }
        return $this->fetch();
    }

4- función de exportación

Visualización del código de front-end:

<form class="layui-form layui-col-md12 x-so" action="{:url('/index.php/index/index/daochu')}" method="get">
                <input type="text" name="fw_pici" value="{$fw_pici ? $fw_pici : '';}"  placeholder="请输入印刷批次"  class="layui-input">
                <button class="layui-btn"><i class="layui-icon">导出</i></button>
</form>

5- código de fondo

//导出xls
    public function daochu(){
        //1.获取输入的批次,从数据库中取出数据
        $where =input('param.fw_pici');
        //halt($where);
        $list = Db('fangwei')->where('fw_pici','=',$where)->order('fw_id ASC')->select();
        //2.加载PHPExcle类库
        vendor('PHPExcel.PHPExcel');
        //3.实例化PHPExcel类
        $objPHPExcel = new \PHPExcel();
        //4.激活当前的sheet表
        $objPHPExcel->setActiveSheetIndex(0);
        //5.设置表格头(即excel表格的第一行)
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'ID')
            ->setCellValue('B1', '防伪码')
            ->setCellValue('C1', '标签码');
        //设置A列水平居中
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
            ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        //设置单元格宽度
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(30);
        $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(30);
        //6.循环刚取出来的数组,将数据逐一添加到excel表格。
        for($i=0;$i<count($list);$i++){
            $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$list[$i]['fw_id']);//ID
            $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$list[$i]['fw_biaoqianma']);//标签码
            $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$list[$i]['fw_fangweima']);//防伪码
        }
        //7.设置保存的Excel表格名称
        $filename = '印刷防伪码'.date('ymd',time()).'.xls';
        //8.设置当前激活的sheet表格名称;
        $objPHPExcel->getActiveSheet()->setTitle('防伪码');
        //9.设置浏览器窗口下载表格
        header("Content-Type: application/force-download");
        header("Content-Type: application/octet-stream");
        header("Content-Type: application/download");
        header('Content-Disposition:inline;filename="'.$filename.'"');
        //生成excel文件
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        //下载文件在浏览器窗口
        $objWriter->save('php://output');
        exit;
    }

Supongo que te gusta

Origin blog.csdn.net/hgb24660/article/details/99696614
Recomendado
Clasificación