作者:LAMP小白 点击:2194 发布日期:2012-10-18 17:01:00 返回列表
今天把后台的excel导出给重新敲了一次,改正了原来的导出的一些性能和功能问题
代码放在这里了,以后项目中有用,特别是大数据的时候 不分页导出谁用谁死啊!
为了简单有效 用的最简单的EXCEL生成方法,没有用PHPEXCEL那个功能强大,但是效率并不高
JS
function initWin(start, end){ if(start == '') start = 0; if(end == '') end = 0; $.post(checkUrl, { start:start, end:end }, function(json){ changeData(json.total, json.record_count); }, 'json'); } var subType = false; function changeData(nums, count){ var html = ''; if(nums == '0' || count == '0'){ $('#adminCountNums').empty().html(count).css( { color:'#FF0000' } ); $('#adminCountPages').empty().html(nums).css( { color:'#FF0000' } ); $("select[name=page_start]").empty().html('mio_lt;option disabled="true" selectedmio_gt;没有数据mio_lt;/optionmio_gt;'); subType = false; }else{ $('#adminCountNums').empty().html(count).css( { color:'#66FF00'} ); $('#adminCountPages').empty().html(nums).css( { color:'#FF0000' } ); html = 'mio_lt;option value="all"mio_gt;全部导出mio_lt;/optionmio_gt;'; for(var i=1;imio_lt;=nums;i++){ html += "mio_lt;option value="+i+"mio_gt;"+i+"mio_lt;/optionmio_gt;"; } $("select[name=page_start]").empty().html(html); subType = true; } } $(".export").click(function(e){ e.preventDefault(); initWin(); selectPagesDialog.show(); return false; }); $("input[name=time_start], input[name=time_end]").change(function(){ var start = $('#time_start').val(); var end = $('#time_end').val(); initWin(start, end); }) $('#selectPages').dialog({ bgiframe: true, //height: 450, width: 600, autoOpen: false, //show: 'scale', //hide: 'scale', modal: true, buttons: { '取消' : function(){ $(this).dialog('close');}, '导出' : function(){ var pageStart = $("select[name=page_start]").children("option:selected").val(); var timeStart = $("input[name=time_start]").val(); var timeEnd = $("input[name=time_end]").val(); var url = exportUrl+'mio_amp;page_start='+pageStart; if (timeStart) { timeStart = timeStart+" "+$("select[name=time_start_Hour]").val()+":00:00"; url += 'mio_amp;time_start='+timeStart; } if (timeEnd) { timeEnd = timeEnd+" "+$("select[name=time_end_Hour]").val()+":00:00"; url += 'mio_amp;time_end='+timeEnd; } if(subType == false){ alert('导入数据为空!');return false; } window.location.replace(url); // 清空数据 $("select[name=page_start]").children('option').remove(); $("select[name=page_end]").children('option').remove(); initWin(timeStart, timeEnd); } } });
PHP
set_time_limit(0); ini_set("memory_limit","-1"); $per_page = 2; $page_start = Request::Get('page_start'); $time_start = Request::Get('time_start'); $time_end = Request::Get('time_end'); if ($time_start) { $filter['add_time mio_gt;='] = $time_start; } if ($time_end) { $filter['add_time mio_lt;='] = $time_end; } //生成limiter if($page_start == 'all'){ $limit = ' ORDER BY `add_time`'; } else { $start_limit = ($page_start - 1) * $per_page; $limiter = $start_limit.','.$per_page; $limit = ' ORDER BY `add_time` LIMIT '.$limiter; } $list = _model('article')-mio_gt;getList($filter, $limit); if ($list) { foreach ($list as $k=mio_gt;$v) { $list[$k]['rt'] = _uri('article_stat', array('article_id' =mio_gt; $v['id']), 'rt_num'); $list[$k]['comment'] = _uri('article_stat', array('article_id' =mio_gt; $v['id']), 'comment_num'); } } if (empty($list)) { return array("这个时间段没有任何数据!", 'success', AnUrl('admin/t')); } //替换庞大的PHPexcel $file_names = '福田微刊导出'.$time_start.'至'.$time_end.'第'.$page_start.'页'; header("Content-Type: application/vnd.ms-excel; charset=GB2312"); header("Content-type: application/octet-stream"); header('Content-type:application/vnd.ms-excel'); header('Content-Disposition:attachment; filename="'.$file_names.'.xls"'); $str = "微刊IDt用户昵称t转发数t评论数t模版IDt图片IDt状态t创建时间t推荐作品tn"; foreach($list as $k =mio_gt; $v){ $user_name = _uri('user', array('id' =mio_gt; $v['user_id']), 'user_name'); if(empty($user_name)){ $user_name = '无昵称'; } $str .= $v['id']."t".$user_name."t".$v['rt']."t".$v['comment']."t".$v['template_id']."t".$v['pic_id']."t".$v['status']."t".$v['add_time']."t".$v['recommend']."tn"; } echo iconv('utf-8', 'gb2312', $str);die(); }
上一篇:设置和使用SQL变量 下一篇:快递查询API