ExcelToArrayService.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: PHP
  5. * Date: 2016/11/28
  6. * Time: 16:20
  7. */
  8. class ExcelToArrayService extends Service
  9. {
  10. /* 导出excel函数*/
  11. public function push($data, $name = 'Excel') {
  12. error_reporting(E_ALL);
  13. date_default_timezone_set('Asia/Shanghai');
  14. $objPHPExcel = new PHPExcel();
  15. /*以下是一些设置 ,什么作者 标题啊之类的*/
  16. $objPHPExcel->getProperties()->setCreator("north")
  17. ->setLastModifiedBy("north")
  18. ->setTitle("数据EXCEL导出")
  19. ->setSubject("数据EXCEL导出")
  20. ->setDescription("备份数据")
  21. ->setKeywords("excel")
  22. ->setCategory("result file");
  23. /*以下就是对处理Excel里的数据, 横着取数据,主要是这一步,其他基本都不要改*/
  24. $num = 1;
  25. $objPHPExcel->setActiveSheetIndex(0)
  26. //Excel的第A列,uid是你查出数组的键值,下面以此类推
  27. ->setCellValue('A' . $num, 'ID')
  28. ->setCellValue('B' . $num, '订购的服务')
  29. //->setCellValue('C' . $num, '数量')
  30. //->setCellValue('D' . $num, '使用的代金券')
  31. ->setCellValue('C' . $num, '地址/联系方式')
  32. ->setCellValue('D' . $num, '支付方式')
  33. //->setCellValue('G' . $num, 'charge_id')
  34. ->setCellValue('E' . $num, '预约时间')
  35. //->setCellValue('F' . $num, '订单处理时间')
  36. ->setCellValue('F' . $num, '保洁师')
  37. ->setCellValue('G' . $num, '备注')
  38. ->setCellValue('H' . $num, '后台备注')
  39. ->setCellValue('I' . $num, '状态')
  40. ->setCellValue('J'.$num,'总额')
  41. ->setCellValue('K'.$num,'折后')
  42. ;
  43. $num += 1;
  44. foreach($data as $key => $value){
  45. $technicians = '';
  46. foreach($value['technicians'] as $k => $v){
  47. $technicians .= $v['technician_name'].' ';
  48. }
  49. if (!empty($value['products'][0]['extra']['type']) && !empty($value['products'][0]['extra']['type'])){
  50. $product_str = $value['products_str'].$value['products'][0]['extra']['type'].$value['products'][0]['extra']['price'];
  51. } else {
  52. $product_str = $value['products_str'];
  53. }
  54. //var_dump();exit;.
  55. $objPHPExcel->setActiveSheetIndex(0)
  56. //Excel的第A列,uid是你查出数组的键值,下面以此类推
  57. ->setCellValue('A' . $num, $value['id'])
  58. ->setCellValue('B' . $num, $product_str)
  59. //->setCellValue('C' . $num, $value['counts'])
  60. // ->setCellValue('D' . $num, $coupons)
  61. ->setCellValue('C' . $num, $value['address']['city'].$value['address']['area'].$value['address']['poi']['name']
  62. .$value['address']['detail'].$value['address']['name'].',手机号'.$value['address']['mobile'])
  63. ->setCellValue('D' . $num, $value['channel'])
  64. // ->setCellValue('G' . $num, $value['charge_id'])
  65. ->setCellValue('E' . $num, $value['booking_time_str'])
  66. //->setCellValue('F' . $num, $value['deal_time_str'])
  67. ->setCellValue('F' . $num, $technicians)
  68. ->setCellValue('G' . $num, $value['memo'])
  69. ->setCellValue('H' . $num, $value['remark'])
  70. ->setCellValue('I' . $num, $value['status_str'])
  71. ->setCellValue('J'.$num,$value['af_sum_price'])
  72. ->setCellValue('K'.$num,$value['sum_price'])
  73. ;
  74. $num += 1;
  75. }
  76. /* foreach ($data as $key => $value) {
  77. $ch1 = 65;
  78. $ch2 = 65;
  79. foreach ($value as $k => $v){
  80. if(is_array($v)){
  81. } else {
  82. //Excel的第A列,uid是你查出数组的键值,下面以此类推
  83. if ($ch1 > 90) {
  84. $ch1 = 65;
  85. $objPHPExcel->setActiveSheetIndex(0)->setCellValue(chr($ch1) . chr($ch2++).$num, $v);
  86. } else{
  87. $objPHPExcel->setActiveSheetIndex(0)->setCellValue(chr($ch1++) . $num, $v);
  88. }
  89. }
  90. }
  91. $num += 1;
  92. }*/
  93. $objPHPExcel->getActiveSheet()->setTitle('User');
  94. $objPHPExcel->setActiveSheetIndex(0);
  95. header('Content-Type: application/vnd.ms-excel');
  96. header('Content-Disposition: attachment;filename="' . $name . '.xls"');
  97. header('Cache-Control: max-age=0');
  98. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  99. $objWriter->save('php://output');
  100. exit;
  101. }
  102. }