TP5.1 导出excel文件

news/2024/7/16 6:44:16 标签: excel, tp5.1, 导出

 

在 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;

<?php

namespace 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.niftyadmin.cn/n/5096369.html

相关文章

ts使用记录

1、安装&#xff1a;通过管理员权权限使用cmd或者终端全局安装 npm install -g typescript2、运行&#xff1a; 可以通过tsc命令运行hello.ts文件 tsc hello.ts3、通过vscode的run code插件去右键运行 1.先安装插件run code 2.全局安装ts-node&#xff0c;npm install -g ts-n…

word字间距突然变大怎么办?

文章目录 原因&#xff1a;word字间距突然变大&#xff0c;是文字布局设置造成的。 解决方法如下&#xff1a; 1、首先在打开的文档中&#xff0c;可以看到如下图所示部分字间距变大。 2、这时鼠标选中字间距变大的区域、或者全选该部分文字。命令选项卡内一般选择文字靠左设置…

通过小程序实现会议Oa主界面

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《微信小程序 》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;…

电脑蓝牙与ESP32蓝牙连接,让电脑发现ESP32

win11蓝牙默认只查看常见蓝牙设备。ESP32创建的蓝牙很有可能是看不到的。 再蓝牙设备发现一栏选择高级&#xff0c;才能查看所有蓝牙设备。 只要下面几行代码&#xff0c;就能让PC发现ESP32 #include <BLEDevice.h> // 引入相关库void setup() {BLEDevice::init("…

第一章: 掌握终端窗口

一、Kali Linux文件系统 理解Kali Linux中文件系统的结构至关重要。 Kali linux的目录结构基于Unix文件系统层次结构标准(Unix Filesystem Hierarchy Standard, FHS)&#xff0c;这就是Kali Linux中目录的结构。 在Windows中&#xff0c;根目录是c:\&#xff0c;但在Kali Li…

【特纳斯电子】智能台灯-仿真设计

视频及资料链接&#xff1a;智能台灯-仿真设计 - 电子校园网 (mcude.com) 编号&#xff1a; T0312205M-FZ 设计简介&#xff1a; 本设计是基于单片机的智能台灯&#xff0c;主要实现以下功能&#xff1a; 1、护眼语音 提示坐姿 2、温度传感器 监测温度 3、语音控制灯的开关…

【Java 进阶篇】JavaScript BOM History 详解

当用户浏览网页时&#xff0c;可以使用JavaScript的BOM (Browser Object Model)中的History对象来访问浏览器的历史记录。这个对象允许您在不更改页面的情况下导航到不同的历史记录项&#xff0c;或者查看有关用户访问过的页面的信息。 在本篇博客中&#xff0c;我们将围绕Jav…

Java基础面试-hashCode与equals

hashCode hashCode( 的作用是获取哈希码&#xff0c;也称为散列码&#xff0c;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引引位置&#xff0c;hashCode0 定义在]DK的Object.java中&#xff0c;Java中的任何类都包含有hashCodel 函数。散列表存储…