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桌面中心(二) 数据库写入
Mar 11 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
分享常见的几种页面静态化的方法
Jan 08 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
Apr 27 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
php适配器模式简单应用示例
Oct 23 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
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
php获取微信openid方法总结
2019/10/10 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
新闻内页-JS分页
2006/06/07 Javascript
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python重试装饰器示例
2014/02/11 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
python实现手势识别的示例(入门)
2020/04/15 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
大学生个人学习总结
2015/02/15 职场文书
军事理论课感想
2015/08/11 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL