PHPExcel.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Http\helper;
  3. class PHPExcel
  4. {
  5. /**
  6. * 垂直excel
  7. * @param string $name excel名
  8. * @param array $title 标题
  9. * @param array $data 数据
  10. * @throws \PHPExcel_Exception
  11. * @throws \PHPExcel_Reader_Exception
  12. * @throws \PHPExcel_Writer_Exception
  13. */
  14. public static function downExcel($name, $title, $data)
  15. {
  16. // 创建对象
  17. $objPHPExcel = new \Maatwebsite\Excel\Classes\PHPExcel();
  18. // 显示错误信息
  19. error_reporting(E_ALL);
  20. $count = count($data);
  21. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
  22. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
  23. for ($i = 0; $i < $count; $i++) {
  24. $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 1))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  25. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . ($i + 1), $title[$i]);
  26. }
  27. for ($i = 0; $i < $count; $i++) {
  28. $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . ($i + 1), $data[$i]);
  29. }
  30. // Rename sheet
  31. $objPHPExcel->getActiveSheet()->setTitle($name);
  32. // Set active sheet index to the first sheet, so Excel opens this as the first sheet
  33. $objPHPExcel->setActiveSheetIndex(0);
  34. // 设置输出
  35. header('Content-Type: application/vnd.ms-excel');
  36. header('Content-Disposition: attachment;filename=' . $name . '.xls');
  37. header('Cache-Control: max-age=0');
  38. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  39. $objWriter->save('php://output');
  40. exit;
  41. }
  42. }