Study.php
5.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
namespace app\admin\controller;
use app\common\controller\Backend;
/**
* 学生管理
*
* @icon fa fa-circle-o
*/
class Study extends Backend
{
/**
* Study模型对象
* @var \app\admin\model\Study
*/
protected $model = null;
public function _initialize()
{
parent::_initialize();
$this->model = new \app\admin\model\Study;
$this->view->assign("genderList", $this->model->getGenderList());
}
/**
* 导入
*/
public function import(){
return parent::import();
}
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
* 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
*/
/**
* 查看
*/
public function index()
{
//当前是否为关联查询
$this->relationSearch = true;
//设置过滤方法
$this->request->filter(['strip_tags', 'trim']);
if ($this->request->isAjax()) {
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('keyField')) {
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$list = $this->model
->with(['team','user'])
->where($where)
->order($sort, $order)
->paginate($limit);
foreach ($list as $row) {
$row->getRelation('team')->visible(['title']);
$row->getRelation('user')->visible(['username']);
}
$result = array("total" => $list->total(), "rows" => $list->items());
return json($result);
}
return $this->view->fetch();
}
//导出数据
public function export(){
if ($this->request->isPost()){
set_time_limit(0);//设置时间限制
$ids = $this->request->post('ids'); //获取数据的所有id
$excel = new \PHPExcel(); // 生成新的excel对象
$excel->getProperties()
->setCreator("FastAdmin") //设置作者
->setLastModifiedBy("FastAdmin") //设置上次修改者
->setTitle("积分表") //设置表格标题
->setSubject("Subject"); //设置主题
$excel->getDefaultStyle()->getFont()->setName('楷体'); //设置默认字体
$excel->getDefaultStyle()->getFont()->setSize(15); //设置默认字体大小
$excel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$excel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$excel->getActiveSheet()->getColumnDimension('C')->setWidth(10);
$excel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
$excel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
$excel->getActiveSheet()->getColumnDimension('H')->setWidth(10);
// 开始操作excel表
$worksheet = $excel->setActiveSheetIndex(0) //操作第一个工作表
->setCellValue('A1','序号') //设置表格标题名称
->setCellValue('B1','姓名') //设置表格标题名称
->setCellValue('C1','性别')
->setCellValue('D1','班级')
->setCellValue('E1','学校')
->setCellValue('F1','手环ID')
->setCellValue('G1','学号')
->setCellValue('H1','总积分');
if ($ids=='all' || empty($ids)){ //判断当前数据为全部或者选中的
$list = $this->model->with('school')->select();
}else{
$list = $this->model->with('school')->select($ids);
}
foreach ($list as $k => $val){
$k = $k + 2;//表格是从2开始的
$worksheet
->setCellValue('A'.$k,$val['id'])
->setCellValue('B'.$k,$val['name'])
->setCellValue('C'.$k,$val['gender']?'男':'女')
->setCellValue('D'.$k,$val['grade'])
->setCellValue('E'.$k,$val['school']['title'])
->setCellValue('F'.$k,$val['unique'])
->setCellValue('G'.$k,$val['sno'])
->setCellValue('H'.$k,$val['earn_score']);
}
$excel->createSheet(); //创建excel表
$title = "学生成绩".date("Y-m-dHis"); //考勤打卡数据_2023-01-07145656.xlsx
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//表明当前文件是.xlsx
header('Content-Disposition: attachment;filename="'.$title.'.xlsx"');//文件名称[考勤打卡数据_2023-01-07145656.xlsx]
header('Cache-Control: max-age=0'); //禁用缓存
header('Cache-Control: max-age=1'); //通知浏览器:1 秒之内不要烦我,自己从缓冲区中刷新。
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // 缓存过期时间(禁用缓存)
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // 上一次修改时间
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 缓存控制:必须重新验证
header('Pragma: public'); // 可被任何缓存所缓存 http1.0协议
$objWriter = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save('php://output'); //保存地址
exit;
}
}
}