本文实例讲述了thinkPHP导出csv文件及用表格输出excel的方法。分享给大家供大家参考,具体如下:
1.thinkphp导出csv文件
导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this->display(),最后细心看到think_page_trace这样的字样,恍然大悟,是页面的跟踪日志,这个默认是会输出来的。最后在方法后面加了一个exit结束就好了,下面是代码:
1.IndexController.class.php
<?php namespace HomeController; use ThinkController; class IndexController extends Controller { public function index(){ $hotel = M('keywords')->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
<?php namespace HomeModel; use ThinkModel; class KeywordsModel extends Model{ public function export_csv($filename, $data){ header("Content-type:text/csv"); header("Content-Disposition:attachment;filename=".$filename); header('Cache-Control:must-revalidate,post-check=0,pre-check=0'); header('Expires:0'); header('Pragma:public'); echo $data; } }
奥妙就在IndexController.class.php代码最后一句的exit这里,如果不写这句,输出的excel里面有html源码,截图如下:
2.用表格输出excel
如下代码purchase_prospects.php
<?php require('page_header.php'); $site_id = getIfSet($_GET, 'site_id', 0); $customer_type = getIfSet($_GET, 'customer_type',0); $DB = Database::connect($site_id); if($site_id>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 = '
firstname | lastname | |
---|---|---|
'.$row['email'].' | '.$row['firstname'].' | '.$row['lastname'].' |
'.$row['email'].' |
Purchase Prospects Report
这样也可以导出ecxcel文件,截图如下
依然注意最后一句exit;如果没有这一句,excel里面会有一些页面元素。
希望本文所述对大家基于thinkPHP框架的php程序设计有所帮助。
相关推荐
- PHP命令行执行整合pathinfo模拟定时任务实例
- PHP url的pathinfo模式加载不同控制器的简单实现
- py文件转exe时包含paramiko模块出错解决方法
- PHP 自动加载的简单实现(推荐)
- php网页版聊天软件实现代码
- php+jquery+html实现点击不刷新加载更多的实例代码
- PHP请求Socket接口测试实例
- PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
- PHP 读取大文件并显示的简单实例(推荐)
- PHP Oauth授权和本地加密实现方法
- Yii2.0中的COOKIE和SESSION用法
- PHP实现四种基础排序算法的运行时间比较(推荐)
- PHP身份证校验码计算方法
- PHP通过加锁实现并发情况下抢码功能
- Yii2的XSS攻击防范策略分析
- Yii2基于Ajax自动获取表单数据的方法
- Yii2实现上下联动下拉框功能的方法
- Yii2实现同时搜索多个字段的方法
- Yii2实现让关联字段支持搜索功能的方法
- Yii2中关联查询简单用法示例