第一:导出数据为Excel
注意:直接url访问,不能使用ajax,因为ajax要求返回数据,和PHPExcel一会浏览器输出冲突!将数据作为参数
1、导出所有用户数据
代码:在index.html文件中的{:build_toolbar('refresh,del')}后面添加下面代码
导出数据
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