fastadmin实现导出Excel和导入Excel数据

第一:导出数据为Excel

注意:直接url访问,不能使用ajax,因为ajax要求返回数据,和PHPExcel一会浏览器输出冲突!将数据作为参数

1、导出所有用户数据

fastadmin实现导出Excel和导入Excel数据_第1张图片

代码:在index.html文件中的{:build_toolbar('refresh,del')}后面添加下面代码


 导出数据 

2、导出单个用户数据

fastadmin实现导出Excel和导入Excel数据_第2张图片

代码

{field: 'id', title: __('按钮'), table: table, buttons:
                                [
                                    // {name: 'addname',
                                    //     text: '添加字段',
                                    //     title: '添加字段',
                                    //     icon: 'fa fa-list',
                                    //     classname: 'btn btn-xs btn-primary btn-dialog',//以弹窗方式
                                    //     url: 'zhuhai/msgcat/addname'
                                    // },
                                    {   name: '导出测评数据',
                                        text: '导出测评数据',
                                        title: '导出测评数据',
                                        icon: 'fa fa-flash',
                                        classname: 'btn btn-xs btn-success',//btn-ajax不能以以ajax方式请求
                                        url: 'appletls/user/out',
                                    },
                                ], operate:false, formatter: Table.api.formatter.buttons
                        },

php代码:

/**
     * 导出所有用户数据
     * 直接url访问,不能使用ajax,因为ajax要求返回数据,和PHPExcel一会浏览器输出冲突!将数据作为参数
     * @throws \PHPExcel_Exception
     * @throws \PHPExcel_Writer_Exception
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function out(){

        $result = Db::name('applet_user')->field('id,name,mobile,colleges')->order('id desc')->select();

        $filename = "用户测评数据";
        vendor('PHPExcel.PHPExcel');
        $objPHPExcel = new \PHPExcel();
        //设置保存版本格式
        $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);

        //设置表头
        $objPHPExcel->getActiveSheet()->setCellValue('A1','id');
        $objPHPExcel->getActiveSheet()->setCellValue('B1','姓名');
        $objPHPExcel->getActiveSheet()->setCellValue('C1','手机');
        $objPHPExcel->getActiveSheet()->setCellValue('D1','意向院校');
        $objPHPExcel->getActiveSheet()->setCellValue('E1','测评分值');
        $objPHPExcel->getActiveSheet()->setCellValue('F1','学历背景得分');
        $objPHPExcel->getActiveSheet()->setCellValue('G1','企业背景得分');
        $objPHPExcel->getActiveSheet()->setCellValue('H1','收入水平得分');
        $objPHPExcel->getActiveSheet()->setCellValue('I1','发展潜力得分');
        $objPHPExcel->getActiveSheet()->setCellValue('J1','管理经验得分');
        $objPHPExcel->getActiveSheet()->setCellValue('K1','英语水平得分');
        $objPHPExcel->getActiveSheet()->setCellValue('L1','背景优势');
        $objPHPExcel->getActiveSheet()->setCellValue('M1','背景劣势');
        $objPHPExcel->getActiveSheet()->setCellValue('N1','匹配院校');

        //改变此处设置的长度数值
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12);
        //输出表格
        $str = '用户未进行测评';
        foreach ($result as $key => &$val) {

            $count = Db::name('applet_answer')->where(['uid'=>$val['id'],'isdelete'=>0])->count();
            $i=$key+2;//表格是从2开始的
            if ($count>=1){

                $row = SubjectService::getResult($val['id'],'');//score--1学历背景 2企业背景 3收入水平 4发展潜力 5管理经验  6英语水平

                //优势
                $advan = $row['advan'] ? implode('、',$row['advan']) : '暂无优势';

                $inferi = $row['inferi'] ? implode('、',$row['inferi']) : '暂无劣势';

                $colllist = $row['colllist'] ? implode('、',array_column($row['colllist'],'title')) : '无匹配院校';

                //$score = Db::name('applet_answer')->where(['uid'=>$val['id'],'isdelete'=>0])->sum('score');

                //dump($row);exit();
                $objPHPExcel->getActiveSheet()->setCellValue('A'.$i,$val['id']);
                $objPHPExcel->getActiveSheet()->setCellValue('B'.$i,$val['name']);
                $objPHPExcel->getActiveSheet()->setCellValue('C'.$i,$val['mobile']);
                $objPHPExcel->getActiveSheet()->setCellValue('D'.$i,$val['colleges']);
                $objPHPExcel->getActiveSheet()->setCellValue('E'.$i,$row['totalscore']);
                $objPHPExcel->getActiveSheet()->setCellValue('F'.$i,$row['score'][0]);
                $objPHPExcel->getActiveSheet()->setCellValue('G'.$i,$row['score'][1]);
                $objPHPExcel->getActiveSheet()->setCellValue('H'.$i,$row['score'][2]);
                $objPHPExcel->getActiveSheet()->setCellValue('I'.$i,$row['score'][3]);
                $objPHPExcel->getActiveSheet()->setCellValue('J'.$i,$row['score'][4]);
                $objPHPExcel->getActiveSheet()->setCellValue('K'.$i,$row['score'][5]);
                $objPHPExcel->getActiveSheet()->setCellValue('L'.$i,$advan);
                $objPHPExcel->getActiveSheet()->setCellValue('M'.$i,$inferi);
                $objPHPExcel->getActiveSheet()->setCellValue('N'.$i,$colllist);
            }
            else{
                $objPHPExcel->getActiveSheet()->setCellValue('A'.$i,$val['id']);
                $objPHPExcel->getActiveSheet()->setCellValue('B'.$i,$val['name']);
                $objPHPExcel->getActiveSheet()->setCellValue('C'.$i,$val['mobile']);
                $objPHPExcel->getActiveSheet()->setCellValue('D'.$i,$val['colleges']);
                $objPHPExcel->getActiveSheet()->setCellValue('E'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('F'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('G'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('H'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('I'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('J'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('K'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('L'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('M'.$i,$str);
                $objPHPExcel->getActiveSheet()->setCellValue('N'.$i,$str);
            }

        }
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");
        header('Content-Disposition:attachment;filename='.$filename.'.xls');
        header("Content-Transfer-Encoding:binary");
        $objWriter->save('php://output');
    }

第二:导入Excel【fastadmin自带导入】

注意:上传只支持xls、xlsx、csv三种格式的数据

1、在你的模块控制器下添加import方法
public function import(){
     return parent::import();
}

2、在index.html中的build_toolbar方法添加import,如下
{:build_toolbar(‘refresh,add,edit,del,import’)}

3、在模块对应的JS中添加import_url,如下
Table.api.init({
     extend: {
          index_url: ‘example/index’,
          add_url: ‘example/add’,
          edit_url: ‘example/edit’,
          del_url: ‘example/del’,
          import_url: ‘example/import’,
          multi_url: ‘example/multi’,
          dragsort_url: ‘’,
          table: ‘category’,
     }
});

第三:自定义导入Excel


 

你可能感兴趣的:(PHP,THINKPHP)