导出多商品订单
include app()->getRootPath() . "/vendor/phpoffice/phpexcel/Classes/PHPExcel.php"; include app()->getRootPath() . "/vendor/phpoffice/phpexcel/Classes/PHPExcel/IOFactory.php"; $PHPExcel = new \PHPExcel(); $expTitle = '非现金订单列表'; //设置excel属性基本信息 $PHPExcel->getProperties()->setCreator("ces") ->setLastModifiedBy("ces") ->setTitle("崇朗科技") ->setSubject($expTitle) ->setDescription("") ->setKeywords($expTitle) ->setCategory(""); $PHPExcel->setActiveSheetIndex(0); $PHPExcel->getActiveSheet()->setTitle("非现金订单列表"); //填入表头主标题 $PHPExcel->getActiveSheet()->setCellValue('A1', date('Y-m-d H:i:s').'非现金订单列表'); //合并表头单元格 $PHPExcel->getActiveSheet()->mergeCells('A1:T1'); //设置表头行高 $PHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(40); $PHPExcel->getActiveSheet()->getRowDimension(2)->setRowHeight(30); //设置表头字体 $PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('黑体'); $PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20); $PHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); $PHPExcel->getActiveSheet()->getStyle('A2:T2')->getFont()->setName('黑体'); // $PHPExcel->getActiveSheet()->getStyle('A2:T2')->getFont()->setSize(14); // $PHPExcel->getActiveSheet()->getStyle('A2:T2')->getFont()->setBold(true); //设置单元格边框 $styleArray = [ 'borders' => [ 'allborders' => [ //'style' => PHPExcel_Style_Border::BORDER_THICK,//边框是粗的 'style' => \PHPExcel_Style_Border::BORDER_THIN,//细边框 //'color' => array('argb' => 'FFFF0000'), ], ], ]; $PHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(18); $PHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(18); //表格标题 $PHPExcel->getActiveSheet()->setCellValue('A2', '订单编号'); $PHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true); $PHPExcel->getActiveSheet()->setCellValue('B2', '交易单号'); $PHPExcel->getActiveSheet()->setCellValue('C2', '运营商'); $PHPExcel->getActiveSheet()->setCellValue('D2', '设备ID'); $PHPExcel->getActiveSheet()->setCellValue('E2', '设备编号'); $PHPExcel->getActiveSheet()->setCellValue('F2', '设备名称'); $PHPExcel->getActiveSheet()->setCellValue('G2', '货道号'); $PHPExcel->getActiveSheet()->setCellValue('H2', '商品名称'); $PHPExcel->getActiveSheet()->setCellValue('I2', '单价'); $PHPExcel->getActiveSheet()->setCellValue('J2', '数量'); $PHPExcel->getActiveSheet()->setCellValue('K2', '出货计数'); $PHPExcel->getActiveSheet()->setCellValue('L2', '出货状态'); $PHPExcel->getActiveSheet()->setCellValue('M2', '出货时间'); $PHPExcel->getActiveSheet()->setCellValue('N2', '订单金额(元)'); $PHPExcel->getActiveSheet()->setCellValue('O2', '退款金额(元)'); $PHPExcel->getActiveSheet()->setCellValue('P2', '提现状态'); $PHPExcel->getActiveSheet()->setCellValue('Q2', '支付方式'); $PHPExcel->getActiveSheet()->setCellValue('R2', '下单时间'); $PHPExcel->getActiveSheet()->setCellValue('S2', '支付时间'); $PHPExcel->getActiveSheet()->setCellValue('T2', '提现时间'); $hang = 3; $sdetailModel = new Sdetail(); foreach ($list as $v){//循环订单 //获取对应订单商品列表 $sdetailList = $sdetailModel->where(['order_id'=>$v['id']])->select()->toArray(); $shuliang = 0; $chanpin = $hang; foreach ($sdetailList as $value){ $shuliang = $shuliang + 1; //输出订单的商品,由于可能一个人购买多个商品,所以在这先输出了 $PHPExcel->getActiveSheet()->setCellValue('G' . $chanpin, $value['line_num']); $PHPExcel->getActiveSheet()->setCellValue('H' . $chanpin, $value['product_name']); $PHPExcel->getActiveSheet()->setCellValue('I' . $chanpin, $value['price'] / 100); $PHPExcel->getActiveSheet()->setCellValue('J' . $chanpin, $value['nums']); $PHPExcel->getActiveSheet()->setCellValue('K' . $chanpin, $value['out_nums']); $PHPExcel->getActiveSheet()->setCellValue('L' . $chanpin, config('params.order')['out_status'][$value['out_status']]); $PHPExcel->getActiveSheet()->setCellValue('M' . $chanpin, empty($value['out_time'])?'':date('Y-m-d H:i:s',$value['out_time'])); $chanpin = $chanpin + 1; } for ($kk = $hang; $kk < ($hang + $shuliang); $kk++) { //合并单元格 $PHPExcel->getActiveSheet()->mergeCells('A' . $hang . ':A' . $kk); $PHPExcel->getActiveSheet()->mergeCells('B' . $hang . ':B' . $kk); $PHPExcel->getActiveSheet()->mergeCells('C' . $hang . ':C' . $kk); $PHPExcel->getActiveSheet()->mergeCells('D' . $hang . ':D' . $kk); $PHPExcel->getActiveSheet()->mergeCells('E' . $hang . ':E' . $kk); $PHPExcel->getActiveSheet()->mergeCells('F' . $hang . ':F' . $kk); $PHPExcel->getActiveSheet()->mergeCells('N' . $hang . ':N' . $kk); $PHPExcel->getActiveSheet()->mergeCells('O' . $hang . ':O' . $kk); $PHPExcel->getActiveSheet()->mergeCells('P' . $hang . ':P' . $kk); $PHPExcel->getActiveSheet()->mergeCells('Q' . $hang . ':Q' . $kk); $PHPExcel->getActiveSheet()->mergeCells('R' . $hang . ':R' . $kk); $PHPExcel->getActiveSheet()->mergeCells('S' . $hang . ':S' . $kk); $PHPExcel->getActiveSheet()->mergeCells('T' . $hang . ':T' . $kk); } $PHPExcel->getActiveSheet()->setCellValue('A' . ($hang), $v['order_code']." ");//加个空格,防止时间戳被转换 $PHPExcel->getActiveSheet()->setCellValue('B' . ($hang), $v['trade_code']." "); $PHPExcel->getActiveSheet()->setCellValue('C' . ($hang), $v['user_name']." "); $PHPExcel->getActiveSheet()->setCellValue('D' . ($hang), $v['machine_id']." "); $PHPExcel->getActiveSheet()->setCellValue('E' . ($hang), $v['machine_number']." "); $PHPExcel->getActiveSheet()->setCellValue('F' . ($hang), $v['machine_name']." "); $PHPExcel->getActiveSheet()->setCellValue('N' . ($hang), $v['amount'].'元'); $PHPExcel->getActiveSheet()->setCellValue('O' . ($hang), $v['refund_amount'].'元'); $PHPExcel->getActiveSheet()->setCellValue('P' . ($hang), $v['trans_status']." "); $PHPExcel->getActiveSheet()->setCellValue('Q' . ($hang), $v['order_type']." "); $PHPExcel->getActiveSheet()->setCellValue('R' . ($hang), $v['create_time']." "); $PHPExcel->getActiveSheet()->setCellValue('S' . ($hang), empty($v['pay_time'])?'':date('Y-m-d H:i:s',$v['pay_time'])." "); $PHPExcel->getActiveSheet()->setCellValue('T' . ($hang), empty($v['trans_time'])?'':date('Y-m-d H:i:s',$v['trans_time'])." "); $hang = $hang + $shuliang; } //设置单元格边框 $PHPExcel->getActiveSheet()->getStyle('A1:T'.$hang)->applyFromArray($styleArray); //设置自动换行 $PHPExcel->getActiveSheet()->getStyle('A4:T'.$hang)->getAlignment()->setWrapText(true); //设置字体大小 $PHPExcel->getActiveSheet()->getStyle('A4:T'.$hang)->getFont()->setSize(12); //垂直居中 $PHPExcel->getActiveSheet()->getStyle('A1:T'.$hang)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); //水平居中 $PHPExcel->getActiveSheet()->getStyle('A1:T'.$hang)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); ob_end_clean(); //这一步非常关键,用来清除缓冲区防止导出的excel乱码 //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5'); $name = $expTitle . "_" . date('YmdHis'); $path = "/uploads/file/$name.xls"; //下载文件在浏览器窗口 $objWriter->save(app()->getRootPath() . "/public/$path"); if (file_exists(app()->getRootPath() . "/public/$path")) { $exportLogModel = new \app\model\ExportLogModel(); $data = []; $data['downloadFileName'] = $name; //导出文件名 $data['downloadUrls'] = $path; //导出地址 $data['functionType'] = 1; //所属功能(1:设备列表、2:设备续费、3:用户列表) $data['functionTypeDesc'] = $expTitle; //所属功能(1:设备列表、2:设备续费、3:用户列表) $data['user_id'] = app()->request->userId; //操作人 $data['execResult'] = 1; //导出状态(1:处理成功、2:处理失败、3:处理中、4:中断处理、5:处理超时、6:等待生成、7:重试) $data['updateTime'] = time(); $exportLogModel->insert($data); return json($result); } $result['code'] = 1; $result['msg'] = '请重新尝试'; return json($result);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理