CI 3.1.9 使用xlsxwriter.class.php导出数据到Excel文件
使用PHPExcel类库导出数据库数据,当数据大于50000条记录时,导出效率较低。网上github有xlsxwriter.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文件中。
来源:oschina
链接:https://my.oschina.net/u/210883/blog/3071203