TP5.1 导出excel文件

 

在 ThinkPHP 5.1 中引入 PHPExcel(现在已被官方弃用,推荐使用 PhpSpreadsheet)时,可以按照以下步骤进行操作:

  1. 在 composer.json 文件中添加 PHPExcel(PhpSpreadsheet)的依赖项。找到 require 部分,并添加以下行:
    "require": {"phpoffice/phpspreadsheet": "^1.0"
    }

  2. 运行命令 composer update 来安装依赖项。

    composer require phpoffice/phpexcel

    安装成功即可存在该目录/vendor/phpoffice/

          

3、引入类 

use PHPExcel;

use PHPExcel_IOFactory;

<?phpnamespace app\api\controller;use Home\Controller\HeyteaApiController;
use Home\Controller\TelMsgAliController;
use think\Controller;
use think\Db;
use think\db\Connection;
use think\facade\Cache;use PHPExcel;
use PHPExcel_IOFactory;//引入两个类require_once '../php-sdk/youzanyun_open_sdk/open-sdk/vendor/autoload.php';class Index extends Controller
{
public function excel(){set_time_limit(0);//设置PHP超时时间$data_res = Db::name("hb_prize_record")->where('pz_type', '实物')->field("id,mark,is_get,get_time,tel,pz_title,pz_name,time,user_name,user_tel,user_procity,user_address,user_time")->select();
//        return json($data_res);$path = dirname(__FILE__);//找到当前脚本所在路径$PHPExcel = new \PHPExcel();//实例化phpexcel$PHPSheet = $PHPExcel->getActiveSheet();$PHPSheet->setTitle("实物中奖信息");//设置表内部名称$PHPSheet->setCellValue("A1", "表编号")->setCellValue("B1", "活动类型")->setCellValue("C1", "是否领取(1-已领取,0-未领取)")->setCellValue("D1", "领取时间")->setCellValue("E1", "登录号码")->setCellValue("F1", "奖项名称")->setCellValue("G1", "中奖时间")->setCellValue("H1", "收货姓名")->setCellValue("I1", "收货电话")->setCellValue("J1", "省市区")->setCellValue("K1", "详细地址")->setCellValue("L1", "提交时间");//表格数据$num = 2;//数据foreach ($data_res as $k => $v) {$PHPSheet->setCellValue("A" . $num, $v['id']);$PHPSheet->setCellValue("B" . $num, $v['mark']);$PHPSheet->setCellValue("C" . $num, $v['is_get']);$PHPSheet->setCellValue("D" . $num, $v['get_time']);
//            $v['now_time'] = date("Y-m-d H:i", $v['now_time']);$PHPSheet->setCellValue("E" . $num, $v['tel']);$PHPSheet->setCellValue("F" . $num, $v['pz_title']);$PHPSheet->setCellValue("G" . $num, $v['pz_name']);$PHPSheet->setCellValue("H" . $num, $v['time']);$PHPSheet->setCellValue("I" . $num, $v['user_name']);$PHPSheet->setCellValue("J" . $num, $v['user_procity']);$PHPSheet->setCellValue("K" . $num, $v['user_address']);$PHPSheet->setCellValue("L" . $num, $v['user_time']);$num++;}$PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, "Excel2007");//创建生成的格式header('Content-Disposition: attachment;filename="实物中奖信息.xlsx"');//下载下来的表格名header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');$PHPWriter->save("php://output");//表示在$path路径下面生成demo.xlsx文件exit;}
}

注意事项:

1、如果本地能导出excel并可以正常打开,但上传到服务器就不行,提示无法打开文件,试试在末尾加上 exit;如

$PHPWriter->save("php://output");//表示在$path路径下面生成demo.xlsx文件
exit;

2、如果是导出文件提示不存在,或者浏览器直接什么都不显示,这个时候考虑是不是没清空缓冲区;

缓冲区问题  解决方法:ob_end_clean()  在输出文件之前先清空缓冲

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

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

相关文章

Go 函数的健壮性、panic异常处理、defer 机制

Go 函数的健壮性、panic异常处理、defer 机制 文章目录 Go 函数的健壮性、panic异常处理、defer 机制一、函数健壮性的“三不要”原则1.1 原则一&#xff1a;不要相信任何外部输入的参数1.2 原则二&#xff1a;不要忽略任何一个错误1.3 原则三&#xff1a;不要假定异常不会发生…

04 接口隔离原则

官方定义 <<代码整洁之道>>作者罗伯特 C马丁 为 “接口隔离原则” 的定义是&#xff1a;客户端不 应该被迫依赖于它不使用的方法&#xff08;Clients should not be forced to depend on methods they do not use&#xff09;。 该原则还有另外一个定义&#xff1…

项目中 .env.development 与 .env.production 的区别

文章目录 一、项目中使用此两个文件的意义二、使用方式 一、项目中使用此两个文件的意义 我们在开发项目时&#xff0c;经常会有开发环境与生产环境&#xff0c;分别会对应不同的请求地址与各种不同的变量&#xff0c;这个时候我们就可以使用 process.env 去抓取这两个文件写的…

如何在Android项目中制作和使用三方包(jar文件)

文章目录 1 概念介绍2 制作方法2.1 制作步骤2.2 制作结果3 使用方法3.1 具体步骤3.2 示例代码4 内容总结在项目中为了跨部门协作需要把相关的内容打成包文件,基于这个需求,我们将介绍如何把 代码制作成三方包,这里的三方包是指jar文件。同时也会介绍如何在Android项目中使用…

win10_Git基于WSL(Linux子系统)统计代码行数命令

win10_Git基于WSL&#xff08;Linux子系统&#xff09;统计代码行数命令 一、引言 找到的基于git统计代码行数的命令&#xff0c;一般都是基于linux系统的shell命令。在使用mac电脑或者linux系统开发时&#xff0c;执行这些命令比较方便。 但是还有大部分人是使用windows做开…

Lua快速入门教程

文章目录 1、Linux安装Lua2、语法练习2.1、变量2.2、循环2.3、函数2.4、数组2.5、迭代器2.6、Table操作2.7、Lua 模块与包2.8、加载机制2.9、Lua 元表(Metatable) 3、Lua 协同程序(coroutine)4、文件IO操作4.1、简单模式4.2、完全模式 5、错误处理 内容来源菜鸟教程&#xff0c…

【LeetCode-数组】-- 寻找数组的中心索引

寻找数组的中心索引 class Solution {public int pivotIndex(int[] nums) {int n nums.length,sum 0;for(int i 0;i<n;i){ //计算所有元素之和sumnums[i];}int sum_l 0; //统计左边元素之和for(int i 0;i<n;i){sum - nums[i];if(sum_l sum){return i;}sum_l nums…

并发编程之互斥锁

互斥锁 锁在IT界都是非常重要的&#xff0c;不但在Python中出现&#xff0c;尤其是数据库中得锁更多&#xff0c; 比如&#xff1a;表锁、行锁、悲观锁、乐观锁、进程锁、互斥锁、递归锁、可重入锁、死锁等。 互斥锁是什么&#xff1f; 将并发变成串行 虽然牺牲了程序的执行效率…

RT thread 信号量操作

信号量控制 在RT-Thread 中&#xff0c;信号量控制块是操作系统用于管理信号量的一个数据结构。 struct rt_semaphore { struct rt_ipc_object parent; /**<inherit from ipc_object*/ rt_uint16_t value; /**<value of semaphore.*/ }定义静态信号量:struct rt_semaph…

五、K8S之Service

Kubernetes Service 一、概念 Deployment对象部署完应用还需要向外界暴露入口才能通过HTTP访问到K8S集群里的应用Pod。Service就是做这件事情的&#xff0c;为什么还需要一个这样的API对象&#xff0c;一个方面是因为Pod的IP不是固定的&#xff0c;另外一个方面是因为一组Pod…

Linux文件管理与用户管理

一、查看文件内容 1、回顾之前的命令 cat命令、tac命令、head命令、tail命令、扩展&#xff1a;tail -f动态查看一个文件的内容 2、more分屏显示文件内容&#xff08;了解&#xff09; 基本语法&#xff1a; # more 文件名称 特别注意&#xff1a;more命令在加载文件时并不…

【三:Mock服务的使用】

目录 1、工具包2、mock的demo1、get请求2、post请求3、带cookies的请求4、带请求头的请求5、请求重定向 1、工具包 1、&#xff1a;服务包的下载 moco-runner-0.11.0-standalone.jar 下载 2、&#xff1a;运行命令java -jar ./moco-runner-0.11.0-standalone.jar http -p 888…

2023-10-17 mysql-innodb-解析write_row的record的一行数据-分析

摘要: 2023-10-17 mysql-innodb-解析write_row的record的一行数据-分析. record是一行数据的序列化后的一整个字节流, 在innodb中需要解读出字段. 本文分析如何解析record, 以便学习这种技巧. row_mysql_store_col_in_innobase_format 调用堆栈: #0 row_mysql_store_col_in…

边写代码边学习之mlflow

1. 简介 MLflow 是一个多功能、可扩展的开源平台&#xff0c;用于管理整个机器学习生命周期的工作流程和工件。 它与许多流行的 ML 库内置集成&#xff0c;但可以与任何库、算法或部署工具一起使用。 它被设计为可扩展的&#xff0c;因此您可以编写插件来支持新的工作流程、库和…

【算法学习】归并算法Merge Sort总结

归并排序思路简单&#xff0c;速度仅次于快速排序&#xff0c;为稳定排序算法&#xff0c;一般用于对总体无序&#xff0c;但是各子项相对有序的数列。 1. 基本思想 归并排序使用分治思想&#xff0c;分治模式下每一层递归有三个步骤&#xff1a; 分解&#xff08;divide)&a…

Git命令在线练习网址--非常友好的提示及动画展示

Git命令在线练习 https://learngitbranching.js.org/ 举个栗子: 在练习时会给你相应提示,你可以按照相应步骤进行操作,并且每一步都有动画演示

直播带货前途渺茫了

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 种种迹象表明电商行业和直播带货将受到冲击。直播带货前途渺茫了&#xff0c;相信很快就有政策出来了&#xff0c;针对电商这块的&#xff0c;支持实体、支持取消直播带货。 (1)目前&#xff0c;…

display有哪些值?说明他们的作用?

display解析: display 属性用于控制元素的外部盒模型&#xff08;外观&#xff09;以及元素在文档中的布局。它有多个不同的值&#xff0c;每个值都会影响元素的呈现方式和行为。以下是一些常见的 display 属性值以及它们的作用&#xff1a; block&#xff08;块级元素&#x…

协同创新、奔赴未来——“华为云杯”2023人工智能创新应用大赛华丽谢幕

9月27日&#xff0c;在苏州工业园区管理委员会、华为云计算技术有限公司的指导下&#xff0c;由SISPARK&#xff08;苏州国际科技园&#xff09;、华为&#xff08;苏州&#xff09;人工智能创新中心联合主办&#xff0c;东北大学工业智能与系统优化国家级前沿科学中心、浙江大…

驱动:驱动相关概念,内核模块编程,内核消息打印printk函数的使用

一、驱动相关概念 1.操作系统的功能 向下管理硬件&#xff0c;向上提供接口 操作系统向上提供的接口类型&#xff1a; 内存管理&#xff1a;内存申请&#xff08;malloc&#xff09; 内存释放&#xff08;free&#xff09;等 文件管理&#xff1a; 通过文件系统格式对文件ext2…