ExportExcelController.class.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. namespace Admin\Controller;
  3. class ExportExcelController extends AddonController
  4. {//导出Excel表格的类
  5. public function index()
  6. {
  7. //取出需要导出的数据
  8. //$user=M('User'); //此方法不通用
  9. $model = M(I('qcode_product'));
  10. $map = $this->_search(I('qcode_product')); //生成Map查询对象
  11. //排序字段,默认为主键名
  12. $order = I('_order') != '' ? I('_order') : $model->getPk();
  13. //排序方式,默认倒序排列,首次显示时因为不会接收到提交数据,所以都是显示的默认值
  14. $sort = I('_sort') == 'asc' ? 'asc' : 'desc';
  15. $modellist = $model->where($map)->order($order . ' ' . $sort)->select();
  16. //导入第三方扩展类库
  17. Vendor('PHPExcel179.PHPExcel');
  18. $objPHPExcel = new \PHPExcel(); //创建PHPExcel对象
  19. //设置属性
  20. $objPHPExcel->getProperties()->setCreator("StudyIM")->setLastModifiedBy("StudyIM")->setTitle("StudyIM.com")->setDescription("StudyIM.com")->setKeywords("StudyIM");
  21. //设置宽度
  22. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
  23. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(18);
  24. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(35);
  25. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
  26. $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(10);
  27. $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
  28. $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
  29. $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
  30. $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(20);
  31. $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(15);
  32. $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(15);
  33. $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(15);
  34. $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(10);
  35. $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(20);
  36. //设置行高
  37. $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
  38. $objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);
  39. //设置字体样式
  40. $objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10); //默认字体大小
  41. $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16)->setBold(true);
  42. $objPHPExcel->getActiveSheet()->getStyle('A2:N2')->getFont()->setBold(true); //粗体
  43. //合并excel
  44. $objPHPExcel->getActiveSheet()->mergeCells('A1:N1');
  45. //设置垂直、水平居中
  46. $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()
  47. ->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)
  48. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  49. $objPHPExcel->getActiveSheet()->getStyle('A2:N2')->getAlignment()
  50. ->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)
  51. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  52. //设置边框
  53. $objPHPExcel->getActiveSheet()->getStyle('A2:N2')->getBorders()->getAllBorders()
  54. ->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
  55. //前两行单元格内容
  56. $objPHPExcel->setActiveSheetIndex(0)
  57. ->setCellValue('A1', I('module_name') . '表查询记录汇总表')
  58. ->setCellValue('A2', 'ID')
  59. ->setCellValue('B2', '用户名')
  60. ->setCellValue('C2', '密码')
  61. ->setCellValue('D2', '邮箱')
  62. ->setCellValue('E2', '性别')
  63. ->setCellValue('F2', '用户资金')
  64. ->setCellValue('G2', '注册时间')
  65. ->setCellValue('H2', '注册IP')
  66. ->setCellValue('I2', '最后登录时间')
  67. ->setCellValue('J2', '最后登录IP')
  68. ->setCellValue('K2', 'QQ')
  69. ->setCellValue('L2', '手机号')
  70. ->setCellValue('M2', '状态')
  71. ->setCellValue('N2', '备注');
  72. //数据行设置
  73. for ($i = 0; $i < count($modellist); $i++) {
  74. $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 3), $modellist[$i]['id']);
  75. $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 3), $modellist[$i]['username']);
  76. $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 3), $modellist[$i]['password']);
  77. $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 3), $modellist[$i]['email']);
  78. $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 3), $modellist[$i]['sex'] = 1 ? '男' : '女');
  79. $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 3), $modellist[$i]['user_money']);
  80. $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 3), $modellist[$i]['reg_time']);
  81. $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 3), $modellist[$i]['reg_ip']);
  82. $objPHPExcel->getActiveSheet()->setCellValue('I' . ($i + 3), $modellist[$i]['last_login'] ? date('Y-m-d H:i:s', $modellist[$i]['last_login']) : '');
  83. $objPHPExcel->getActiveSheet()->setCellValue('J' . ($i + 3), $modellist[$i]['last_ip']);
  84. $objPHPExcel->getActiveSheet()->setCellValue('K' . ($i + 3), $modellist[$i]['qq']);
  85. $objPHPExcel->getActiveSheet()->setCellValue('L' . ($i + 3), $modellist[$i]['mobile']);
  86. $objPHPExcel->getActiveSheet()->setCellValue('M' . ($i + 3), $modellist[$i]['status'] = 1 ? '正常' : '禁止');
  87. $objPHPExcel->getActiveSheet()->setCellValue('N' . ($i + 3), $modellist[$i]['remark']);
  88. //设置垂直、水平居中
  89. $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':N' . ($i + 3))->getAlignment()
  90. ->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER)
  91. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  92. $objPHPExcel->getActiveSheet()->getRowDimension($i + 3)->setRowHeight(16);//行高
  93. //设置边框
  94. $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':N' . ($i + 3))->getBorders()->getAllBorders()
  95. ->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
  96. }
  97. //sheet命名
  98. $objPHPExcel->getActiveSheet()->setTitle(I('module_name') . '表');
  99. //默认打开的sheet
  100. $objPHPExcel->setActiveSheetIndex(0);
  101. //excel头参数
  102. header("Content-Type:application/vnd.ms-execl");
  103. header('Content-Disposition:attachment;filename=' . I('module_name') . '表查询结果(' . date('YmdHis') . ').xls');//日期文件名后缀
  104. header('Cache-Control:max-age=0');
  105. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //excel2007为xlsx
  106. $objWriter->save('php://output');
  107. }
  108. }