侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

thinkPHP导出csv文件及用表格输出excel的方法

ThinkPHP  /  管理员 发布于 8年前   142

本文实例讲述了thinkPHP导出csv文件及用表格输出excel的方法。分享给大家供大家参考,具体如下:

1.thinkphp导出csv文件

导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this->display(),最后细心看到think_page_trace这样的字样,恍然大悟,是页面的跟踪日志,这个默认是会输出来的。最后在方法后面加了一个exit结束就好了,下面是代码:

1.IndexController.class.php

field('PageName,Page')->select();  $str = "关键字,名称\n";  $str = iconv('utf-8','gb2312',$str);  $result = mysql_query("select PageName,Page from hotel_keywords");  while($row=mysql_fetch_array($result)){   $PageName = iconv('utf-8','gb2312',$row['PageName']);   $Page = iconv('utf-8','gb2312',$row['Page']);   $str .= $PageName.",".$Page."\n";  }  $fileName = date('Ymd').'.csv';  $model = D('Keywords');  $model->export_csv($fileName,$str);  exit; }}

2.KeywordsModel.class.php

奥妙就在IndexController.class.php代码最后一句的exit这里,如果不写这句,输出的excel里面有html源码,截图如下:

2.用表格输出excel

如下代码purchase_prospects.php

0 && $customer_type>0){ $sql = ''; $out = '';  $short_name_array = SiteSettings::$SITE_SHORT_NAME; $short_name = $short_name_array[$site_id];  switch ($customer_type) {  case '1':{   $sql = "SELECT       email, CONCAT(UCASE(LEFT(firstname, 1)),SUBSTRING(firstname, 2)) AS firstname, CONCAT(UCASE(LEFT(lastname, 1)),SUBSTRING(lastname, 2)) AS lastname      FROM customers      WHERE site_id =$site_id       AND email NOT REGEXP '.+(avanquest)|(planetart)|(novadevelop)|(qatest).+'       AND email IN(SELECT a.email FROM customers a INNER JOIN orders b ON a.id=b.`customer_id` AND b.is_test=0 AND a.site_id =$site_id)       AND email NOT IN (SELECT email_address FROM `newsletter_unsubscribes` WHERE site_id =$site_id);";   $res = $DB->query($sql);   $out = '';   while($row = mysql_fetch_array($res)){    $out .= '';   }   $short_name .= '_purchased';   break;  }  case '2':{   $DB->query("DROP TEMPORARY TABLE IF EXISTS tmp_purchase;");   $DB->query("CREATE TEMPORARY TABLE tmp_purchase SELECT a.email FROM customers a INNER JOIN orders b ON a.id=b.`customer_id` AND b.is_test=0 AND a.site_id =$site_id; ");   $DB->query("DROP TEMPORARY TABLE IF EXISTS tmp_nopurchase;");   $DB->query("CREATE TEMPORARY TABLE tmp_nopurchase SELECT email FROM customers WHERE site_id =$site_id AND email NOT IN(SELECT email FROM tmp_purchase);");   if(9 != $site_id){    $datatype = SiteSettings::getPurchaseDataType($site_id);    $DB->query("INSERT tmp_nopurchase SELECT DISTINCT email FROM triggered_email_data WHERE datatype='$datatype' AND email NOT IN(SELECT email FROM tmp_purchase);");   }   $sql = "SELECT DISTINCT email FROM tmp_nopurchase WHERE email NOT REGEXP '.+(avanquest)|(planetart)|(novadevelop)|(qatest).+' AND Email REGEXP '[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$' AND email NOT IN (SELECT email_address FROM `newsletter_unsubscribes` WHERE site_id =$site_id);";   $res = $DB->query($sql);   $out = '
emailfirstnamelastname
'.$row['email'].''.$row['firstname'].''.$row['lastname'].'
'; while($row = mysql_fetch_array($res)){ $out .= ''; } $short_name .= '_non-purchased and signup'; break; } default: break; } $out .= '
email
'.$row['email'].'
'; header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=$short_name.xls"); echo $out; exit;}?>

Purchase Prospects Report

Select Site:      Select Type:     

这样也可以导出ecxcel文件,截图如下

依然注意最后一句exit;如果没有这一句,excel里面会有一些页面元素。

希望本文所述对大家基于thinkPHP框架的php程序设计有所帮助。

您可能感兴趣的文章:

  • 基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
  • PHP导出MySQL数据到Excel文件(fputcsv)
  • 详解PHP导入导出CSV文件
  • php导出csv数据在浏览器中输出提供下载或保存到文件的示例
  • php导出csv格式数据并将数字转换成文本的思路以及代码分享
  • PHP 导出数据到淘宝助手CSV的方法分享
  • PHP实现CSV文件的导入和导出类
  • PHP 实现从数据库导出到.csv文件方法
  • php使用指定编码导出mysql数据到csv文件的方法
  • php导出CSV抽象类实例
  • 原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】


  • 上一条:
    thinkphp命名空间用法实例详解
    下一条:
    thinkPHP下的widget扩展用法实例分析
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • thinkphp + mongodb项目中数据加载慢问题分析及解决(0个评论)
    • thinkphp6框架中封装redis操作类(0个评论)
    • thinkphp6框架中实现定时任务功能流程步骤(0个评论)
    • Thinkphp5.1框架中实现Session+Redis会话共享流程步骤(0个评论)
    • TP5框架版本5.0.10安全漏洞根据官方补丁修复,也是本站安全漏洞修复(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-12
    • 2018-01
    • 2018-02
    • 2020-03
    • 2021-07
    • 2021-12
    • 2022-05
    • 2022-06
    • 2022-09
    • 2023-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客