Codeigniter+PHPExcel实现导出数据到Excel文件


Posted in PHP onJune 12, 2014

PHPExcel是用来操作OfficeExcel文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格。而Codeigniter是一个功能强大的PHP框架。二者结合就能起到非常棒的效果啦!

1.准备工作

下载PHPExcel:http://phpexcel.codeplex.com
这是个强大的Excel库,这里只演示导出Excel文件的功能,其中的大部分功能可能都用不着。

2.安装PHPExcel到Codeigniter

1)解压压缩包里的Classes文件夹中的内容到application\libraries\目录下,目录结构如下:
--application\libraries\PHPExcel.php
--application\libraries\PHPExcel(文件夹)
2)修改application\libraries\PHPExcel\IOFactory.php文件
--将其类名从PHPExcel_IOFactory改为IOFactory,遵从CI类命名规则。
--将其构造函数改为public

3.安装完毕,写一个导出excel的控制器(Controller)

代码如下:

<?php
classTable_exportextendsCI_Controller{
    function__construct()
    {
        parent :: __construct();
        // Hereyoushouldaddsomesortofuservalidation
        // topreventstrangersfrompullingyourtabledata
    }
    functionindex($table_name)
    {
        $query = $this -> db -> get($table_name);
        if(!$query)
            returnfalse;
        // StartingthePHPExcellibrary
        $this -> load -> library('PHPExcel');
        $this -> load -> library('PHPExcel/IOFactory');
        $objPHPExcel = newPHPExcel();
        $objPHPExcel -> getProperties() -> setTitle("export") -> setDescription("none");
        $objPHPExcel -> setActiveSheetIndex(0);
        // Fieldnamesinthefirstrow
        $fields = $query -> list_fields();
        $col = 0;
        foreach($fieldsas$field)
        {
            $objPHPExcel -> getActiveSheet() -> setCellValueByColumnAndRow($col, 1, $field);
            $col++;
            }
        // Fetchingthetabledata
        $row = 2;
        foreach($query -> result()as$data)
        {
            $col = 0;
            foreach($fieldsas$field)
            {
                $objPHPExcel -> getActiveSheet() -> setCellValueByColumnAndRow($col, $row, $data -> $field);
                $col++;
                }
            $row++;
            }
        $objPHPExcel -> setActiveSheetIndex(0);
        $objWriter = IOFactory :: createWriter($objPHPExcel, 'Excel5');
        // Sendingheaderstoforcetheusertodownloadthefile
        header('Content-Type:application/vnd.ms-excel');
        header('Content-Disposition:attachment;filename="Products_' . date('dMy') . '.xls"');
        header('Cache-Control:max-age=0');
        $objWriter -> save('php://output');
        }
    }


4.测试

加入数据库有表名为products,此时可以访问http://www.yoursite.com/table_export/index/products导出Excel文件了。
PHP 相关文章推荐
用在PHP里的JS打印函数
Oct 09 PHP
一个用mysql_odbc和php写的serach数据库程序
Oct 09 PHP
将OICQ数据转成MYSQL数据
Oct 09 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
解析phpstorm + xdebug 远程断点调试
Jun 20 PHP
php模板原理讲解
Nov 13 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
PHP中echo和print的区别
Aug 28 PHP
php.ini中的request_order推荐设置
May 10 PHP
PHP实现微信发红包程序
Aug 24 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
Apr 27 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
Jun 12 #PHP
让CodeIgniter数据库缓存自动过期的处理的方法
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 #PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 #PHP
You might like
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
js精度溢出解决方案
2012/12/02 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
JS实现按钮控制计时开始和停止功能
2017/07/27 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
Python使用Redis实现作业调度系统(超简单)
2016/03/22 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
2016/06/14 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
团工委书记自荐书范文
2013/12/17 职场文书
地球一小时倡议书
2014/04/15 职场文书
合作协议书
2014/04/23 职场文书
搞笑的获奖感言
2014/08/16 职场文书
2014年幼儿园个人工作总结
2014/11/10 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
团组织关系介绍信
2019/06/24 职场文书
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python