ExcelExpoter.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wenzhi
  5. * Date: 2019/2/18
  6. * Time: 2:25 PM
  7. */
  8. namespace App\Admin\Extensions;
  9. namespace App\Admin\Extensions;
  10. use App\Examarg;
  11. use App\Grade;
  12. use App\School;
  13. use App\Sclass;
  14. use App\User;
  15. use Encore\Admin\Grid\Exporters\AbstractExporter;
  16. use Maatwebsite\Excel\Facades\Excel;
  17. use PHPExcel_Worksheet_Drawing;
  18. class ExcelExpoter extends AbstractExporter{
  19. protected $head = [];
  20. protected $body = [];
  21. public function setAttr($head, $body){
  22. $this->head = $head;
  23. $this->body = $body;
  24. }
  25. public function export()
  26. {
  27. $fileName = date('YmdHis') . '-' . uniqid();
  28. $this->ndata = array();
  29. foreach ($this->getData() as $datum=>$value) {
  30. $username='';
  31. $examname='';
  32. $sclassinfo='';
  33. $name = User::where('id',$value['user_id'])->select("name","school_id","sclass_id","grade_id")->first();
  34. if($name){
  35. $username = $name['name'];
  36. $school_name = School::where("id",$name['school_id'])->select('name')->first();
  37. if($school_name){
  38. $school_name = $school_name['name'];
  39. }
  40. $grade = Grade::where("id",$name['grade_id'])->select('name')->first();
  41. if($grade){
  42. $grade = $grade['name'];
  43. }
  44. $sclass = Sclass::where("id",$name['sclass_id'])->select('name')->first();
  45. if($sclass){
  46. $sclass = $sclass['name'];
  47. }
  48. $exam = Examarg::where('id',$value['examarg_id'])->select('name')->first();
  49. if($exam){
  50. $examname = $exam['name'];
  51. }
  52. }
  53. $this->ndata[]=array(
  54. '编号'=>$datum+1,
  55. '姓名'=>$username,
  56. '学校' => $school_name,
  57. '年级'=>$grade,
  58. '班级'=>$sclass,
  59. '试卷名称'=>$examname,
  60. '成绩'=>$value['grade'],
  61. '考试时间'=> $value['created_at']
  62. );
  63. }
  64. // dd($this->ndata);
  65. Excel::create($fileName, function($excel) {
  66. $excel->sheet('学生成绩', function($sheet) {
  67. // 这段逻辑是从表格数据中取出需要导出的字段
  68. $head = ['编号', '姓名', '学校', '年级', '班级', '试卷名称','成绩','考试时间'];
  69. $rows = collect([$head]);
  70. $sheet->rows($rows);
  71. $rows = collect($this->ndata)->map(function ($item) {
  72. // dd($this->getData());
  73. return array_only($item, ['编号', '姓名', '学校', '年级', '班级', '试卷名称','成绩','考试时间']);
  74. });
  75. // dd($rows);
  76. $sheet->rows($rows);
  77. });
  78. })->export('xls');
  79. }
  80. }