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公用函数列表[正则]
Feb 22 PHP
PHP 简单日历实现代码
Oct 28 PHP
php短域名转换为实际域名函数
Jan 17 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
Aug 22 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
php函数与传递参数实例分析
Nov 15 PHP
php轻量级的性能分析工具xhprof的安装使用
Aug 12 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
php通过执行CutyCapt命令实现网页截图的方法
Sep 30 PHP
PHP7 安装event扩展的实现方法
Oct 08 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
Mar 26 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脚本的10个技巧(4)
2006/10/09 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
2019/10/12 PHP
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
JavaScript使用cookie实现记住账号密码功能
2015/04/27 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
2018/03/16 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
2018/08/24 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
pymysql的简单封装代码实例
2020/01/08 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
求职自荐信范文格式
2013/11/29 职场文书
李培根演讲稿
2014/05/22 职场文书
竞聘自述材料
2014/08/25 职场文书
周年庆典答谢词
2015/01/20 职场文书
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
基于PyQt5制作一个群发邮件工具
2022/04/08 Python
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server