PHPEXCEL 导出excel

在这里插入图片描述

       $styleArray = ['alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER,'vertical' => Alignment::VERTICAL_CENTER],];$border_style = ['borders' => ['allborders' => ['style' =>  \PHPExcel_Style_Border::BORDER_THIN ,//细边框]]];$begin_date = $request->begin_date;$end_date = $request->end_date;$search = $request->search_word;$arr_com = [];if (isset($request->com_val)){$arr_com = explode(',',$request->com_val);}$arr_fact = [];if (isset($request->fact_val)){$arr_fact = explode(',',$request->fact_val);}$res = $this->getData($begin_date,$end_date,$search,$arr_com,$arr_fact,0,0);$data = $res['data'];if(count($data)>0){ob_end_clean();ob_start();// 最后导出$year = date('Y',strtotime($begin_date));$week = intval(date('W',strtotime($begin_date)));$filename = $year.'年'.$week.'周出货表';$objPHPExcel = new \PHPExcel();$objPHPExcel->getActiveSheet()->setTitle($filename);$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30);//行高$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(40);$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);//第一行$objPHPExcel->getActiveSheet()->getCell("A1")->setValue($filename);$objPHPExcel->getActiveSheet()->mergeCells('A1:I1');//第二行$objPHPExcel->getActiveSheet()->getCell("A2")->setValue('出货日期');$richTextObj = new \PHPExcel_RichText(); //每一行都需要重新New一个richText$setStyleObj = $richTextObj->createTextRun("国别(海运/");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色$setStyleObj = $richTextObj->createTextRun("空运");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FFFF0000")); //设置颜色$setStyleObj = $richTextObj->createTextRun("/");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色$setStyleObj = $richTextObj->createTextRun("陆运");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF00FF00")); //设置颜色$setStyleObj = $richTextObj->createTextRun("/");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色$setStyleObj = $richTextObj->createTextRun("铁路");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF0000FF")); //设置颜色$setStyleObj = $richTextObj->createTextRun("/");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色$setStyleObj = $richTextObj->createTextRun("海空");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FFFF00FF")); //设置颜色$setStyleObj = $richTextObj->createTextRun(")");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色$objPHPExcel->getActiveSheet()->getCell("E2")->setValue($richTextObj);//数据写进Excel,并对关键字高亮处理foreach ($data as $key =>$value){$excelRow = ($key + 3); //excel第几行$objPHPExcel->getActiveSheet()->getCell('D'.$excelRow)->setValue($value['tod_date']);//国别 运输方式处理$richTextObjNation = new \PHPExcel_RichText(); //每一行都需要重新New一个richText 拼接 运输方式 突击拔高$count_nation = count($value['nations']);foreach ($value['nations'] as $k_nation => $v_nation){//国别 运输方式:  0海运,1空运,2陆运,3铁路,4海空if($v_nation['flag'] == 0){$setStyleObj = $richTextObjNation->createTextRun($v_nation['name']);$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色if($k_nation != $count_nation - 1){$setStyleObj = $richTextObjNation->createTextRun("、");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色}}if($v_nation['flag'] == 1){$setStyleObj = $richTextObjNation->createTextRun($v_nation['name']);$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FFFF0000")); //设置颜色if($k_nation != $count_nation - 1){$setStyleObj = $richTextObjNation->createTextRun("、");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色}}if($v_nation['flag'] == 2){$setStyleObj = $richTextObjNation->createTextRun($v_nation['name']);$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF00FF00")); //设置颜色if($k_nation != $count_nation - 1){$setStyleObj = $richTextObjNation->createTextRun("、");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色}}if($v_nation['flag'] == 3){$setStyleObj = $richTextObjNation->createTextRun($v_nation['name']);$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF0000FF")); //设置颜色if($k_nation != $count_nation - 1){$setStyleObj = $richTextObjNation->createTextRun("、");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色}}if($v_nation['flag'] == 4){$setStyleObj = $richTextObjNation->createTextRun($v_nation['name']);$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FFFF00FF")); //设置颜色if($k_nation != $count_nation - 1){$setStyleObj = $richTextObjNation->createTextRun("、");$setStyleObj->getFont()->setColor(new \PHPExcel_Style_Color("FF000000")); //设置颜色}}}$objPHPExcel->getActiveSheet()->getCell('E'.$excelRow)->setValue($richTextObjNation);$objPHPExcel->getActiveSheet()->getRowDimension($excelRow)->setRowHeight(20);$objPHPExcel->getActiveSheet()->getStyle('E'.$excelRow)->getAlignment()->setWrapText(true);}//垂直居中$objPHPExcel->getActiveSheet()->getStyle('A1:I2')->applyFromArray($styleArray);//细边框$objPHPExcel->getActiveSheet()->getStyle('A2:I'.$excelRow)->applyFromArray($border_style);//字体$objPHPExcel->getActiveSheet()->getStyle('A1:I1')->getFont()->setBold(true)->setName('黑体')->setSize(16);$objPHPExcel->getActiveSheet()->getStyle('A2:I2')->getFont()->setBold(true)->setName('宋体')->setSize(12);// 导出excelob_end_clean();header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="' . $filename . '.xls');header('Cache-Control: max-age=0');header('Content-Type: text/html; charset=utf-8');//$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");$objWriter->save('php://output');exit;}else{return response()->json(['code' => 1,'msg' => '没有数据'] );}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/109263.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-桥接模式

核心思想 适配器模式类似,以后也会遇到意思接近一样的设计模式。在开发中一般多个模式混用,且根据不同的场景进行搭配,桥接模式也是结构型模式将抽象的部分和实现的部分分离,使它们都可以独立的变化。通俗来说,就是通…

arcgis+postgresql+postgis使用介绍

关于arcgis在postgresql创建地理数据库我分享一下自己的经历: 众所周知,arcgis如果在oracle中创建地理数据库,必须要使用ArcToolbox里面的地理数据库工具去创建,在里面发现它还可以创建sql_server, postgresql数据库类型&#xf…

贪心算法:简单而高效的优化策略

在计算机科学中,贪心算法是一种简单而高效的优化策略,用于解决许多组合优化问题。虽然它并不适用于所有问题,但在一些特定情况下,贪心算法能够产生近似最优解,而且计算成本较低。在本文中,我们将深入探讨贪…

Oracle监听器启动出错:本地计算机上的OracleOraDb11g_home1TNSListener服务启动后又停止了解决方案

在启动oracle的服务OracleOraDb11g_home1TNSListener时,提示服务启动后又停止了。 解决方法: 修改oracle安装目录下的两个配置文件: 以上两个文件,对应的HOST的值,都改为127.0.0.1 然后再启动服务,启动成…

f4v如何格式转换mp4格式?分享几种好用转换方法

为了使视频文件格式更加通用,更容易在不同设备和平台上播放,需要将F4V格式转换为MP4格式。F4V是Adobe Flash Player使用的一种视频文件格式,而MP4格式是一种更通用的视频文件格式,几乎所有设备和平台都支持它。此外,MP…

【Apollo】阿波罗自动驾驶系统:驶向未来的智能出行(含源码安装)

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

npm install sentry-cli失败的问题

1. 目前报错 2. 终端运行 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli3. 再安装 npx sentry/wizardlatest -i nextjs即可成功

PL端案例开发手册

目 录 前 言 1 工程编译、程序加载方法 1.1 工程编译 1.2 程序加载 2 led-flash 2.1 案例说明 2.2 操作说明 2.3 关键代码 更多帮助 前 言 本文主要介绍PL端案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Unified 20…

Flink流批一体计算(16):PyFlink DataStream API

目录 概述 Pipeline Dataflow 代码示例WorldCount.py 执行脚本WorldCount.py 概述 Apache Flink 提供了 DataStream API,用于构建健壮的、有状态的流式应用程序。它提供了对状态和时间细粒度控制,从而允许实现高级事件驱动系统。 用户实现的Flink程…

Qt 获取文件图标、类型 QFileIconProvider

Qt中获取系统图标、类型是通过QFileIconProvider来实现的,具体如下: 一、Qt获取系统文件图标1、获取文件夹图标QFileIconProvider icon_provider;QIcon icon icon_provider.icon(QFileIconProvider::Folder);2、获取指定文件图标QFileInfo file_info(n…

Django基础6——数据模型关系

文章目录 一、基本了解二、一对一关系三、一对多关系3.1 增删改查3.2 案例:应用详情页3.2 案例:新建应用页 四、多对多关系4.1 增删改查4.2 案例:应用详情页4.3 案例:部署应用页 一、基本了解 常见数据模型关系: 一对一…

vue使用vant中的popup层,在popup层中加搜索功能后,input框获取焦点 ios机型的软键盘不会将popup顶起来的问题

1.使用vant的popup弹出层做了一个piker的选择器,用户需要在此基础上增加筛选功能。也就是输入框 2.可是在ios机型中,input框在获取焦点以后,ios的软键盘弹起会遮盖住我们的popup层,导致体验不是很好 3.在大佬的解答及帮助下,采用窗口滚动的方式解决此方法 <Popupv-model&q…

AxureRP制作静态站点发布互联网,内网穿透实现公网访问

AxureRP制作静态站点发布互联网&#xff0c;内网穿透实现公网访问 文章目录 AxureRP制作静态站点发布互联网&#xff0c;内网穿透实现公网访问前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4…

Java线程池UncaughtExceptionHandler无效?可能是使用方式不对

背景 在业务处理中&#xff0c;使用了线程池来提交任务执行&#xff0c;但是今天修改了一小段代码&#xff0c;发现任务未正确执行。而且看了相关日志&#xff0c;也并未打印结果。 源码简化版如下&#xff1a; 首先&#xff0c;自定义了一个线程池 public class NamedThrea…

Linux环境下SVN服务器的搭建与公网访问:使用cpolar端口映射的实现方法

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

vue3:使用:图片生成二维码并复制

实现在 vue3 中根据 url 生成一个二维码码&#xff0c;且可以复制。 注&#xff09;复制功能 navigator.clipboard.write 只能在安全的localhost 这种安全网络下使用。https中需要添加安全证书&#xff0c;且在域名&#xff08;例&#xff1a;https://www.baidu.com&#xff0…

家政服务小程序制作教程:从设计到开发的详细步骤

在当今的数字化时代&#xff0c;小程序已经成为了一种趋势&#xff0c;不仅提供了方便快捷的应用体验&#xff0c;也成为了各种行业进行营销和客户管理的有力工具。特别是对于家政行业&#xff0c;通过小程序的应用&#xff0c;可以更好地进行业务管理&#xff0c;提升服务质量…

k8s的学习篇1

一 k8s的概念 1.1 k8s k8s是一个轻量级的&#xff0c;用于管理容器化应用和服务的平台。通过k8s能够进行应用的自动化部署和扩容缩容。 1.2 k8s核心部分 1.prod: 最小的部署单元&#xff1b;一组容器的集合&#xff1b;共享网络&#xff1b;生命周期是短暂的&#xff1b; …

nginx配置keepalive长连接

nginx之keepalive详解与其配置_keepalive_timeout_恒者走天下的博客-CSDN博客 为什么要有keepalive? 因为每次建立tcp都要建立三次握手&#xff0c;消耗时间较长&#xff0c;所以为了减少tcp建立连接需要的时间&#xff0c;就可以设置keep_alive长连接。 nginx中keep_alive对…

Docker网络-探索容器网络如何相互通信

当今世界&#xff0c;企业热衷于容器化&#xff0c;这需要强大的网络技能来正确配置容器架构&#xff0c;因此引入了 Docker Networking 的概念。Docker 是一种容器化平台&#xff0c;允许您在独立、轻量级的容器中运行应用程序和服务。Docker 提供了一套强大的网络功能&#x…