• TP5.1 导出excel文件


     

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

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

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

      composer require phpoffice/phpexcel

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

              

    3、引入类 

    use PHPExcel;

    use PHPExcel_IOFactory;

    1. namespace app\api\controller;
    2. use Home\Controller\HeyteaApiController;
    3. use Home\Controller\TelMsgAliController;
    4. use think\Controller;
    5. use think\Db;
    6. use think\db\Connection;
    7. use think\facade\Cache;
    8. use PHPExcel;
    9. use PHPExcel_IOFactory;
    10. //引入两个类
    11. require_once '../php-sdk/youzanyun_open_sdk/open-sdk/vendor/autoload.php';
    12. class Index extends Controller
    13. {
    14. public function excel()
    15. {
    16. set_time_limit(0);//设置PHP超时时间
    17. $data_res = Db::name("hb_prize_record")
    18. ->where('pz_type', '实物')
    19. ->field("id,mark,is_get,get_time,tel,pz_title,pz_name,time,user_name,user_tel,user_procity,user_address,user_time")
    20. ->select();
    21. // return json($data_res);
    22. $path = dirname(__FILE__);//找到当前脚本所在路径
    23. $PHPExcel = new \PHPExcel();//实例化phpexcel
    24. $PHPSheet = $PHPExcel->getActiveSheet();
    25. $PHPSheet->setTitle("实物中奖信息");//设置表内部名称
    26. $PHPSheet->setCellValue("A1", "表编号")
    27. ->setCellValue("B1", "活动类型")
    28. ->setCellValue("C1", "是否领取(1-已领取,0-未领取)")
    29. ->setCellValue("D1", "领取时间")
    30. ->setCellValue("E1", "登录号码")
    31. ->setCellValue("F1", "奖项名称")
    32. ->setCellValue("G1", "中奖时间")
    33. ->setCellValue("H1", "收货姓名")
    34. ->setCellValue("I1", "收货电话")
    35. ->setCellValue("J1", "省市区")
    36. ->setCellValue("K1", "详细地址")
    37. ->setCellValue("L1", "提交时间");//表格数据
    38. $num = 2;
    39. //数据
    40. foreach ($data_res as $k => $v) {
    41. $PHPSheet->setCellValue("A" . $num, $v['id']);
    42. $PHPSheet->setCellValue("B" . $num, $v['mark']);
    43. $PHPSheet->setCellValue("C" . $num, $v['is_get']);
    44. $PHPSheet->setCellValue("D" . $num, $v['get_time']);
    45. // $v['now_time'] = date("Y-m-d H:i", $v['now_time']);
    46. $PHPSheet->setCellValue("E" . $num, $v['tel']);
    47. $PHPSheet->setCellValue("F" . $num, $v['pz_title']);
    48. $PHPSheet->setCellValue("G" . $num, $v['pz_name']);
    49. $PHPSheet->setCellValue("H" . $num, $v['time']);
    50. $PHPSheet->setCellValue("I" . $num, $v['user_name']);
    51. $PHPSheet->setCellValue("J" . $num, $v['user_procity']);
    52. $PHPSheet->setCellValue("K" . $num, $v['user_address']);
    53. $PHPSheet->setCellValue("L" . $num, $v['user_time']);
    54. $num++;
    55. }
    56. $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, "Excel2007");//创建生成的格式
    57. header('Content-Disposition: attachment;filename="实物中奖信息.xlsx"');//下载下来的表格名
    58. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    59. $PHPWriter->save("php://output");//表示在$path路径下面生成demo.xlsx文件
    60. exit;
    61. }
    62. }

    注意事项:

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

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

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

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

  • 相关阅读:
    Golang Array 数组使用注意事项和细节
    如何压缩图片大小?减小图片大小方法来啦
    Windows(二):windows+nginx+openssl本地搭建nginx并配置ssl实现https访问
    MobileViT代码分析及添加SE注意力的实验结果
    ntohl()、htonl()、ntohs()、htons()函数
    【Numpy总结】第七节:Numpy常用的函数(汇总所有函数,收藏这一篇就OK啦~)
    PHP基础语法(上)
    14. 机器学习 - KNN & 贝叶斯
    Springioc的配置使用
    计算机毕业设计springboot+vue+elementUI乐器培训管理系统
  • 原文地址:https://blog.csdn.net/qq_21041889/article/details/133880862