|
本帖最后由 mijun 于 2018年12月10日 15:05 编辑
网上有PHPExcel导出,我也曾经用这个类库导出,但是碰到数据量比较大(>5000)的时候,导出速度不是很理想,后面又继续寻找其他的可以替代PHPExcel的,发现确实有,而且还很简单,还是开源的。GitHub上有,https://github.com/mk-j/PHP_XLSXWriter,据说是PHPExcel团队的人写的。1、首先在上面的那个网址下载好xlsxwriter.class.php。 2、放在application\libraries目录下,更名为xlsxwriter.php。 3、在application\controllers目录下新建控制文件 PHP复制代码 <?php class C_export_excel extends CI_Controller { // function export_excel($data) { $fpxx = $data; $this->load->library('xlsxwriter.php'); //直接载入类 $fields = $fpxx->list_fields(); //取查询结果的字段列表 $rows = $fpxx->result_array(); //查询结果转换为数组 foreach ($fields as $field) { //这段是把前面的字段列表全部指定为字符型,如果要单独设置,就用下面注释的那段 $header[$field] = 'string'; } /*$headers = Array( 'xh' => 'string', 'sbh' => 'string', 'mc' => 'string', 'rdrq' => 'date', 'djrq' => 'date', 'je' =>'0.00', 'dm' => 'string', 'fx_lx' => 'string', 'nd' => 'string' );*/ $objPHPExcel = new XLSXWriter(); // Field names in the first row //p($fields);die; $objPHPExcel->writeSheetHeader('sheet1', $header); //写excel文件标题栏,单独设置的用$headers // Fetching the table data 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 export_fpxx() { set_time_limit (0);// 加入脚本无限期执行控制,担心时间长了脚本直接被中止了。 $data['fplx'] = $this->uri->segment(4);// uri的参数传递 $data['nd'] = $this->uri->segment(5); // uri的参数传递 $data['ny'] = $this->uri->segment(6); // uri的参数传递 $this->load->model('m_gt3_fpxx', 'fpxx'); ///查询数据结果 $fpxx = $this->fpxx->fpxx_list($data); //获取结果 $this->export_excel($fpxx); //交给上面的处理即可导出,速度很快,目前我使用的最快的。10w大概10秒左右。 } } 4 调用,就直接 c_export_excel/exprot_fpxx/ 按照上面的export_excel中的三个参数传递后,即可导出数据到excel文件中。 5、请教一下,连接oracle查询出来的数据怎么利用CI的分页类,一直用的rownum来处理,当数据在50万以上查询就比较慢了,有什么比较好的办法解决这个问题吗 | |