excel分页导出

excel分页导出

作者: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
0