ServiceExcel.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: vowkin
  5. * Date: 2017/5/22
  6. * Time: 21:49
  7. */
  8. namespace app\common\service;
  9. class ServiceExcel
  10. {
  11. public static function excel_exchange($list,$excel_name,$code){
  12. $excel=new ServiceExcel();
  13. $Ym=date('Y-m-d',time());
  14. vendor("phpExcel.PHPExcel");
  15. $objPHPExcel =new \PHPExcel();
  16. $objPHPExcel->setActiveSheetIndex(0);
  17. $obj = $objPHPExcel->getActiveSheet();
  18. $obj->setTitle($Ym.$excel_name);
  19. $AZ = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
  20. 'AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU',
  21. ];
  22. switch ($code)
  23. {
  24. case 'goods_info':
  25. $excel->excel_goods($obj,$list,$AZ);
  26. break;
  27. case 'good_order':
  28. $excel->excel_goods_order($obj,$list,$AZ);
  29. break;
  30. case 'user_update':
  31. $excel->excel_user_integral_detail($obj,$list,$AZ);
  32. break;
  33. case 'user_package':
  34. $excel->excel_user_package($obj,$list,$AZ);
  35. break;
  36. case 'user_arrange':
  37. $excel->excel_arrange($obj,$list,$AZ);
  38. break;
  39. case 'payCode':
  40. $excel->excel_PayCode($obj,$list,$AZ);
  41. break;
  42. }
  43. header('Content-Type: application/vnd.ms-excel');
  44. header('Content-Disposition: attachment;filename="'.$Ym.'--'.$excel_name.'.xlsx"');
  45. header('Cache-Control: max-age=0');
  46. header('Cache-Control: max-age=1');
  47. header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // 在过去的日期
  48. header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // 总是修改
  49. header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
  50. header ('Pragma: public'); // HTTP/1.0
  51. \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007')->save('php://output');
  52. exit;
  53. }
  54. //导出商品信息列表
  55. private function excel_goods($obj,$list,$AZ){
  56. $i=1;
  57. $j=1;
  58. $col_index=['goods_type_name'=>1,'goods_name'=>2,'money'=>3,'points'=>4,'cost'=>5,'count'=>6,'add_ts'=>7,'status'=>8];//需要导出内容
  59. $titles=['序号','商品类型','商品名称','价格(RMB)','价格(卡币)','商品成本','库存','添加时间','状态'];
  60. foreach($titles as $index=>$v){//标题填充
  61. $obj->setCellValue($AZ[$index].$i, $v);
  62. }
  63. $i = 2;
  64. foreach($list as $k=>$info){
  65. foreach($info as $col=>$v){//填充内容
  66. $obj->setCellValue($AZ[$col_index[$col]].$i, $v);
  67. $obj->setCellValue('A'.$i, $j);
  68. }
  69. $i++;$j++;
  70. }
  71. }
  72. //excel表格导入信息
  73. public static function excel_import($file_name){
  74. $file = request()->file('excel');
  75. // 移动到框架应用根目录/public/uploads/ 目录下
  76. $info = $file->validate(['size'=>3145728,'ext'=>'xls,csv,xlsx'])->move(ROOT_PATH . 'public' . DS . 'uploads/'.$file_name);
  77. if($info) {
  78. $filename = $info->getSaveName();
  79. $filenames = ROOT_PATH . 'public' . DS . 'uploads/'.$file_name.'/' . $filename;
  80. vendor("phpExcel.PHPExcel");
  81. $filetype = \PHPExcel_IOFactory::identify($filenames);//自动获取文件类型
  82. $objReader = \PHPExcel_IOFactory::createReader($filetype);//获取文件读取对象
  83. $objPHPExcel = $objReader->load($filenames);//加载excel文件
  84. $name = $objPHPExcel->getsheetNames();
  85. $sheetn = end($name);
  86. $objReader->setLoadSheetsOnly($sheetn);
  87. $objPHPExcel = $objReader->load($filenames);
  88. $sheetname = $objPHPExcel->getSheet();//获取当前sheet
  89. $data = $sheetname->toArray();
  90. if(!empty($data)){
  91. unset($data[0]);
  92. return $data;
  93. }else{
  94. return false;
  95. }
  96. }else{
  97. return false;
  98. }
  99. }
  100. }