TP5.1 导出excel文件

news/2024/10/17 18:23:06/

 

在 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.ppmy.cn/news/1158604.html

相关文章

【JS进阶】JS 迭代器和生成器

JS 迭代器和生成器 1.迭代器 迭代器&#xff0c;Iterator&#xff0c;其代表一种接口&#xff0c;目的是为各种不同的数据结构提供统一的访问机制。 任何数据结构&#xff0c;只要部署了 Iterator 接口&#xff0c;就可以完成遍历操作&#xff01;(当然要是可遍历的数据结构…

PLC 学习day01 了解PLC 的组成和知识。

1.资料来源 链接&#xff1a;3.三菱PLC编程视频关于PLC工作原理的介绍_哔哩哔哩_bilibili 2. PLC 的知识 2.1 PLC 的概述及特点功能 PLC是可编程逻辑控制器&#xff08;Programmable Logic Controller&#xff09;的英文缩写&#xff0c;是融合了继电器控制功能和计算机运算功…

利用Python turtle绘制中国结附源码

一、中国结 01 平安喜乐 1&#xff09;效果图 import turtle turtle.screensize(600,800) turtle.pensize(10) turtle.pencolor("red") turtle.seth(-45) turtle.fd(102) turtle.circle(-6,180) turtle.fd(102) turtle.circle(6,180) turtle.fd(102) turtle.circle(…

dependencyManagement和dependencies的区别

它们两个的层级关系是&#xff1a;dependencyManagement>dependencies dependencies&#xff1a; 在dependencies标签里声明的依赖都会自动引入&#xff0c;并默认被所有的子项目所继承(强制性的)。 dependencyManagement&#xff1a; 当一个项目包含多个模块时&#xff0…

leetcode 300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

300. 最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子…

dubbo-admin安装

一、dubbo-admin安装 1、环境准备 dubbo-admin 是一个前后端分离的项目。前端使用vue&#xff0c;后端使用springboot&#xff0c;安装 dubbo-admin 其实就是部署该项目。我们将dubbo-admin安装到开发环境上。要保证开发环境有jdk&#xff0c;maven&#xff0c;nodejs 安装no…

众和策略:几点开盘和收盘股票?

股票开盘和收盘时间是投资者有必要知道的要害信息&#xff0c;因为它们挑选了股票生意的初步和结束时间。在此文章中&#xff0c;咱们将从多个视点分析股票开盘和收盘时间&#xff0c;包括全球商场开盘时间、技术分析对开盘前后价格不坚决的影响、以及日内生意者如安在开盘和收…

android U广播详解(二)

android U广播详解&#xff08;一&#xff09; 基础代码介绍 广播相关 // 用作单个进程批量分发receivers&#xff0c;已被丢弃 frameworks/base/services/core/java/com/android/server/am/BroadcastReceiverBatch.java // 主要逻辑所在类&#xff0c;包括入队、分发、结束…