CI 3X 使用xlsxwriter.class.php导出数据到Excel文件

做~自己de王妃 提交于 2019-12-04 01:09:56

CI 3.1.9 使用xlsxwriter.class.php导出数据到Excel文件

使用PHPExcel类库导出数据库数据,当数据大于50000条记录时,导出效率较低。网上githubxlsxwriter.class.php类,能较好解决此问题。GitHub上有,https://github.com/mk-j/PHP_XLSXWriter,有较为详细的示例,能较快上手,据说是PHPExcel团队的人写的。

使用步骤:

1、首先在上面的那个网址下载好xlsxwriter.class.php
2、放在application\libraries目录下,更名为xlsxwriter.php
3、在application\controllers目录下新建控制文件

<?php 
    
class C_export_excel extends CI_Controller
    {
         function export_excel($data)
        {
            $rows = $data;  //注意,此$data一定是一个关联数组
            $this->load->library('xlsxwriter.php');  //直接载入类


           //将列名进行相应的数据类型设置,也可以将xh更改为:学号,汉字,将来生成的execl文件中,就是汉字的列名
            $header = Array(
                'xh' => 'string',
                'mc' => 'string',
                'rdrq' => 'date',
                'djrq' => 'date',
                '
金额' =>'0.00',
                '代码' => 'string',
                '年度' => 'string'
            );
 
            
$objPHPExcel = new XLSXWriter(); 
            
$objPHPExcel->writeSheetHeader('sheet1', $header); //excel文件标题栏
            foreach ($rows as $data) {//逐条写表数据   

$objPHPExcel->writeSheetRow('sheet1', $data); //填充数据
            }
            header('Content-Type:application/vnd.ms-excel');
            header('Content-Disposition:attachment;filename="Excel_' . date('Y-m-d H:i:s') . '.xlsx"');//导出成2007格式
            header('Cache-Control:max-age=0');
            $objPHPExcel->writeToStdOut('php://output');
        }
 
        
function toExcel ()//被调用的方法,可以在view中进行调用
        {
           set_time_limit(0);// 加入脚本无限期执行控制,不用担心长时间被终止
            $data['lx'] = $this->uri->segment(4);// uri的参数传递,供使用,此处未用到
            $this->load->model('MtoExcel'); //加载模型
            $lxlist = $this-> MtoExcel->lxlist($data); // $lxlist 是关联数组,使用->result_array();
           $this->export_excel($lxlist ); //交给上面的处理即可导出成excel文件 
        
} 
    
}
 
4、创建模型文件application\models下:

<?php

 

class MtoExcel extends CI_Model

{

 

public function __construct()

{

parent::__construct();

// Your own constructor code

}

 

public function lxlist ($data)

{

$zyid = $data['zyid'];

$sql = "SELECT lw.tmbh,(SELECT z.zy FROM xyzyb z WHERE lw.zyid=z.zyid) zy,lw.tm,lw.tmms FROM lwtm lw WHERE lw.zyid='$zyid'";

$ret = $this->db->query($sql);

return $ret->result_array();//注意,此处一定要返回为关联数组

}

 

}

5、调用,就直接 c_export_excel/toExcel/ 照上面的export_excel中的三个参数传递后,即可导出数据到excel文件中。
 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!