文档章节

cakephp中实现csv文件导出

SnowFlake
 SnowFlake
发布于 2016/06/20 16:14
字数 367
阅读 15
收藏 0

cakephp实现csv导出的方法并不复杂,可以通过引入一个CSVhelper的方法来实现,cakephp版本1.x或2.x都支持,但要注意不同版本的命名规则。

1.保存下面的代码为CsvHelper.php(如果是cakephp1.x版本,名字改为csv.php)文件放到app/View/Helper目录中

<?php
class CsvHelper extends AppHelper
{
var $delimiter = ',';
var $enclosure = '"';
var $filename = 'Export.csv';
var $line = array();
var $buffer;

function CsvHelper()
{
    $this->clear();
}
function clear() 
{
    $this->line = array();
    $this->buffer = fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+');
}

function addField($value) 
{
    $this->line[] = $value;
}

function endRow() 
{
    $this->addRow($this->line);
    $this->line = array();
}

function addRow($row) 
{
    fputcsv($this->buffer, $row, $this->delimiter, $this->enclosure);
}

function renderHeaders() 
{
    header('Content-Type: text/csv');
    header("Content-type:application/vnd.ms-excel");
    header("Content-disposition:attachment;filename=".$this->filename);
}

function setFilename($filename) 
{
    $this->filename = $filename;
    if (strtolower(substr($this->filename, -4)) != '.csv') 
    {
        $this->filename .= '.csv';
    }
}

function render($outputHeaders = true, $to_encoding = null, $from_encoding ="auto") 
{
    if ($outputHeaders) 
    {
        if (is_string($outputHeaders)) 
        {
            $this->setFilename($outputHeaders);
        }
        $this->renderHeaders();
    }
    rewind($this->buffer);
    $output = stream_get_contents($this->buffer);

    if ($to_encoding) 
    {
        $output = mb_convert_encoding($output, $to_encoding, $from_encoding);
    }
    return $this->output($output);
}
}
?>

2.添加这个Helper到controller中,假设是/app/Controller/PostsController

var $helpers = array('Html', 'Form','Csv');

3.在此controller中添加导出方法

function download()
{
    $this->set('posts', $this->Post->find('all'));
    $this->layout = null;
    $this->autoLayout = false;
    Configure::write(‘debug’, ’0′);
}

4.在模版中添加上面导出操作的链接,地址/app/view/Posts/index.ctp

echo $this->Html->link('CSV导出',array('controller'=>'posts','action'=>'download'), array('target'=>'_blank'));

5.最后一步,新建/app/view/Posts/download.ctp

<?php
    //设置标题行
    $header_line= array('id','title');
    $this->Csv->addRow($header_line);
    //设置内容
    foreach ($posts as $post)
    {
        $line = $post['Post'];
        $this->Csv->addRow($line);
     }
    $filename='posts';
    //输出中文加GBK参数
     echo  $this->Csv->render($filename,'GBK');
?>

 

本文转载自:http://www.cnblogs.com/mafeifan/archive/2013/05/31/3111295.html

SnowFlake
粉丝 9
博文 171
码字总数 0
作品 0
郑州
程序员
私信 提问
CakePHP 2.0 发布,PHP的Web应用框架

CakePHP开发团队已经发布了CakePHP 2.x系列的一个版本CakePHP 2.0。在该版本中不再支持PHP4,CakePHP团队对其代码库进行了重构,以便严格遵循PHP 5规范(包括5.2及以后版本)。 CakePHP是一个...

鉴客
2011/10/19
2.3K
2
CakePHP 2.7.0 发布,PHP 开发框架

CakePHP 2.7.0 发布,此版本 API 兼容 2.x 系列,最新的 2.6 系列版本是 2.6.9 版本,这周将会发布。 CakePHP 2.7.0 可以替换你现有的 2.5 或者 2.6 库,此版本包括一些新特性。 废弃特性: ...

oschina
2015/07/13
921
3
wamp下配置cakePHP(可解决不加载样式问题)

CakePHP的安装很简单只需要下载代码包到自己的服务器目录就可以了。 我用的是Wamp环境,配置步骤如下: 1.下载CakePHP,地址:“https://codeload.github.com/cakephp/cakephp/legacy.zip/...

梦梦阁
2018/04/23
15
0
CakePHP 3.4.0 和 3.3.15 发布,PHP 开发框架

CakePHP 核心团队很高兴地宣布 CakePHP 3.4.0 和 3.3.15 发布了,CakePHP 是一个 PHP 的快速开发框架,使用常见的设计模式,如关联数据映射、前端控制器和 MVC。 主要目标是提供一个结构化框...

两味真火
2017/02/13
1K
3
在 Windows Azure 网站上运行 CakePHP 应用

上周我搞了个简单的 CakePHP 应用并在 Windows Azure 上跑了起来。 CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。...

红薯
2012/08/02
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
64
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
26
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
43
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
27
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
昨天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部