php Excel导出功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | /** * * execl数据导出 */ function exportOrderExcel2( $title , $cellName , $data ) { //引入核心文件 vendor( "PHPExcel.PHPExcel" ); $objPHPExcel = new \PHPExcel(); //定义配置 $topNumber = 2; //表头有几行占用 $xlsTitle = iconv( 'utf-8' , 'gb2312' , $title ); //文件名称 $fileName = $title . date ( '_YmdHis' ); //文件名称 $cellKey = array ( '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' , 'AA' , 'AB' , 'AC' , 'AD' , 'AE' , 'AF' , 'AG' , 'AH' , 'AI' , 'AJ' , 'AK' , 'AL' , 'AM' , 'AN' , 'AO' , 'AP' , 'AQ' , 'AR' , 'AS' , 'AT' , 'AU' , 'AV' , 'AW' , 'AX' , 'AY' , 'AZ' ); $objPHPExcel ->getActiveSheet()->getDefaultColumnDimension()->setWidth(20); //所有单元格(列)默认宽度 //垂直居中 $objPHPExcel ->getDefaultStyle()->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel ->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //处理表头标题 $objPHPExcel ->getActiveSheet()->mergeCells( 'A1:' . $cellKey [ count ( $cellName )-1]. '1' ); //合并单元格(如果要拆分单元格是需要先合并再拆分的,否则程序会报错) $objPHPExcel ->setActiveSheetIndex(0)->setCellValue( 'A1' , $title ); $objPHPExcel ->getActiveSheet()->getStyle( 'A1' )->getFont()->setBold(true); $objPHPExcel ->getActiveSheet()->getStyle( 'A1' )->getFont()->setSize(18); $objPHPExcel ->getActiveSheet()->getStyle( 'A1' )->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel ->getActiveSheet()->getStyle( 'A1' )->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //处理表头 foreach ( $cellName as $k => $v ) { $objPHPExcel ->setActiveSheetIndex(0)->setCellValue( $cellKey [ $k ]. $topNumber , $v ); //设置表头数据 // $objPHPExcel->getActiveSheet()->freezePane($cellKey[$k].($topNumber+1));//冻结窗口 // $objPHPExcel->getActiveSheet()->getStyle($cellKey[$k].$topNumber)->getFont()->setBold(true);//设置是否加粗 // $objPHPExcel->getActiveSheet()->getStyle($cellKey[$k].$topNumber)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中 // if($v[3] > 0)//大于0表示需要设置宽度 // { // $objPHPExcel->getActiveSheet()->getColumnDimension($cellKey[$k])->setWidth($v[3]);//设置列宽度 // } } //处理数据 $start = $topNumber +1; $j = $topNumber +1; foreach ( $data as $k => $v ) { // $j = $start; foreach ( $v [ 'sku' ] as $k1 => $v1 ) { if ( $k1 ==0){ //计算初步当前单元格标识,以及 需要合并的单元格标识 A B C D E F G M $end = $start + count ( $v [ 'sku' ])-1; $objPHPExcel ->getActiveSheet()->mergeCells( "A" . $start . ':' . "A" . $end ); $objPHPExcel ->getActiveSheet()->mergeCells( "B" . $start . ':' . "B" . $end ); $objPHPExcel ->getActiveSheet()->mergeCells( "C" . $start . ':' . "C" . $end ); $objPHPExcel ->getActiveSheet()->mergeCells( "D" . $start . ':' . "D" . $end ); $objPHPExcel ->getActiveSheet()->mergeCells( "E" . $start . ':' . "E" . $end ); $objPHPExcel ->getActiveSheet()->mergeCells( "F" . $start . ':' . "F" . $end ); $objPHPExcel ->getActiveSheet()->mergeCells( "G" . $start . ':' . "G" . $end ); $objPHPExcel ->getActiveSheet()->mergeCells( "M" . $start . ':' . "M" . $end ); $objPHPExcel ->getActiveSheet()->setCellValue( "A" . $start , $v [ 'o_addtime' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "B" . $start , $v [ 'd_prov' ] . $v [ 'd_city' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "C" . $start , $v [ 'g_name' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "D" . $start , $v [ 'epid' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "E" . $start , $v [ 'did' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "F" . $start , $v [ 'deviceid' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "G" . $start , $v [ 'o_addtime' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "M" . $start , $v [ 'o_fromtype' ]); } $objPHPExcel ->getActiveSheet()->setCellValue( "H" . $j , $v1 [ 'cm_gid' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "I" . $j , $v1 [ 'sku_title' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "J" . $j , $v1 [ 'skuid' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "K" . $j , $v1 [ 'sku_num' ]); $objPHPExcel ->getActiveSheet()->setCellValue( "L" . $j , sprintf( "%.2f" ,( $v1 [ 'sku_activity_price' ]* $v1 [ 'sku_num' ]))); $j ++; } $start += count ( $v [ 'sku' ]); } //导出execl ob_end_clean(); //防止乱码 header( 'pragma:public' ); header( 'Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"' ); header( "Content-Disposition:attachment;filename=$fileName.xls" ); //attachment新窗口打印inline本窗口打印 $objWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel , 'Excel5' ); $objWriter ->save( 'php://output' ); exit ; } |
本文来自博客园,作者:小ྀ青ྀ年້,转载请注明原文链接:https://www.cnblogs.com/dalaowang/p/11044916.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?