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;

<?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()  在输出文件之前先清空缓冲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dove言和

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值