zoukankan      html  css  js  c++  java
  • PHPexcel导出

    写过很多次的导出,依旧每次导出的时候都会忘记一些必要参数,趁着有时间记录下

    参数设置 $header 列头

        $datas 数据
        $fileName 文件名称
        $sheet sheet名称
        $isDown 文件保存到指定文件还是直接输出
     
     public  function excelout($header,$datas,$fileName,$sheet,$isDown=false)
    {
    ini_set ("memory_limit","-1"); //内存无限制
    $obj = new PHPExcel();
    $obj->setActiveSheetIndex(0); //激活默认sheet
    $obj->getActiveSheet()->setTitle($sheet); //设置激活sheet的名称
    //头部及列设置
    $jisuan = 0;
    foreach ($header as $key=>$headerlist ){
    if($key>25){ //当导出列大于25列时处理
    $list[]= chr(65).chr(65+$jisuan);
    $obj->getActiveSheet()->getColumnDimension(chr(65).chr(65+$jisuan))->setWidth(20);
    $obj->getActiveSheet()
    ->setCellValue($list[$key] . 1, $headerlist);
    }else{
    $list[]=chr(65+$jisuan);
    $obj->getActiveSheet()->getColumnDimension(chr(65+$jisuan))->setWidth(20);
    $obj->getActiveSheet()
    ->setCellValue($list[$key] . 1, $headerlist);
    }
    if($jisuan == 25){
    $jisuan = 0;
    }else{
    $jisuan++;
    }
    }
    //渲染数据部分
    $i = 2;
    foreach ($datas as $data){
    $j=0;
    foreach ($data as $key=>$datalist){
    $obj->getActiveSheet()
    ->setCellValue($list[$j] . $i,$datalist);
    $j++;
    }
    $i++;
    }
    // header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="' . $fileName . '.xls');
    header('Cache-Control: max-age=1');
    header("Content-type: application/vnd.ms-excel");
    header("Content-Type: application/force-download");
    header("Expires: 0");
    header("Pragma: no-cache");
    $objWriter = PHPExcel_IOFactory::createWriter($obj, 'Excel5');
    if($isDown){ //下载文件到服务器
    $url = Core::Instance()->getAppPath();
    $file = '/temp/'.$fileName.'.xlsx';
    $_savePath = $url.$file;
    $mode = 0777;
    if (!is_dir($url)){//判断路径是否存在 不存在则创建
    @mkdir($url, $mode);
    @chmod($url,0777);
    if(is_file($_savePath)){//判断文件是否存在,存在则删除
    unlink($_savePath);
    }
    $objWriter->save($_savePath);
    return $file;
    } else{
    if(is_file($_savePath)){
    unlink($_savePath);
    }
    $objWriter->save($_savePath);//保存文件到指定路径
    return $file;
    }

    }else{
    header("Content-Disposition:attachment;filename=$fileName.xls");
    $objWriter->save('php://output');exit; 直接输出到浏览器
    }

    }


    //导出单一查询数据量过大时查询分sheet
     ini_set ("memory_limit","-1");
    $name = trim( $this->request("name"));
    $staffname = trim( $this->request("staffname"));
    $start_time = trim($this->request("start_time"));
    $end_time = trim($this->request("end_time"));
    $header = ['序列号','姓名']; //列表头
    $total = 10000; //总数据条数
    $obj = new PHPExcel(); //实例化
    $obj->removeSheetByIndex(0); //避免缓存
    $sheet = 'sheet名称';
    $fileName = "文件名称";
    for ($i = 0; $i<=intval($total/100);$i++){//每一百条为一个sheet
    $datast = 'sql查询出来的数据';
    // var_dump($datast);die;
    $obj->createSheet($i); //创建sheet
    $obj->setActiveSheetIndex($i);//激活sheet
    $obj->getActiveSheet()->setTitle($sheet.$i); //给sheet命名

    //头部及列设置
    foreach ($header as $key=>$headerlist ){
    $list[]=chr(65+$key);
    $obj->getActiveSheet()->getColumnDimension(chr(65+$key))->setWidth(20);
    $obj->getActiveSheet()
    ->setCellValue($list[$key] . 1, $headerlist);
    }

    foreach ($datast[1] as $key=>$value){
    $datas[$key]['id']=$value['id']??'';
    $datas[$key]['name']=$value['name']??'';

    }
    //内容部分
    $n = 2;
    foreach ($datas as $data){
    $j=0;
    foreach ($data as $datalist){
    $obj->getActiveSheet()
    ->setCellValue($list[$j] . $n,$datalist);
    $j++;
    }
    $n++;
    }
    }

    $obj->setActiveSheetIndex(0);
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header("Content-type: application/vnd.ms-excel");
    header("Content-Type: application/force-download");
    header('Content-Disposition: attachment;filename="' . $fileName . '.xls');
    header('Cache-Control: max-age=1');
    header("Expires: 0");
    header("Pragma: no-cache");
    $objWriter = PHPExcel_IOFactory::createWriter($obj, 'Excel5');
    $objWriter->save('php://output'); //浏览器输出



  • 相关阅读:
    NOIP201310华容道
    NOIP201110观光公交
    markdown
    【NOIP2016】愤怒的小鸟
    【NOIP2016】组合数问题
    [TJOI2019]唱,跳,rap,篮球(生成函数,组合数学,NTT)
    CF1217E Sum Queries? (线段树)
    CF1178F Short/Long Colorful Strip(DP)
    ZROI 暑期高端峰会2019 总结
    [HNOI2012]集合选数(构造,状态压缩,DP)
  • 原文地址:https://www.cnblogs.com/lucky2017/p/12378325.html
Copyright © 2011-2022 走看看