execl导出

浏览:764 发布日期:2018/03/20 分类:技术分享 关键字: execl导出
// 定义报错
error_reporting(E_ERROR | E_WARNING | E_PARSE );
// 本execl导出没有使用composer包 类库文件请自行下载 放在根目录extend下
/**
 * [export description]
 * @author 984270382@qq.com
 * @datetime 2018-03-12T15:20:49+0800
 * @param  [arr] $data  [查询的数据]  二维数组
 * @param  [arr] $field [列名] 字段名必须 字段名称必须 函数转换可选 参数可选
 * @param  [str] $title [表名] 表名可选
 * @param  [arr|str] $total [总计] 兼容  array str 
 * @return [type]        [xls]
 */
function export($data,$fieldName,$title,$total=null)
{
    //默认引用框架类 
    Vendor("PHPExcel.PHPExcel");
    $objPHPExcel = new PHPExcel();
    $objDrawing = new PHPExcel_Worksheet_Drawing();
    $field=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
    $objPHPExcel->getProperties()->setCreator("passboat");
    $objPHPExcel->getProperties()->setLastModifiedBy("passboat");
    $objPHPExcel->getProperties()->setTitle("passboat");
    // 遍历列名
    $i=0;
    foreach ($fieldName as $key => $value) {
    $objPHPExcel->getActiveSheet()->setCellValue($field[$i].'1', $value[1]);
        $objPHPExcel->getActiveSheet()->getColumnDimension($field[$i])->setWidth(15);
        $i++;
    }
    // 遍历数据
    foreach ($data as $ke => $val) {
          $j=0;
      foreach ($fieldName as $k => $v) {
        if(null != $v[2]){
          if(null != $v[3]){
        $objPHPExcel->getActiveSheet()->setCellValue($field[$j].($ke+2), ' '.$v[2]($val[$v[0]],$v[3]));
          }else{
        $objPHPExcel->getActiveSheet()->setCellValue($field[$j].($ke+2), ' '.$v[2]($val[$v[0]]) );
      }
        }else{
      $objPHPExcel->getActiveSheet()->setCellValue($field[$j].($ke+2), ' '.$val[$v[0]] );
        }
      $j++;
    }
    }
    if(null != $total){
      if(is_array($total)){
        $objPHPExcel->getActiveSheet()->setCellValue($field[count($fieldName)].'1', $total[0]);
        if($total[2] != ''){
        $objPHPExcel->getActiveSheet()->setCellValue($field[count($fieldName)].'2', $total[1]."(单位:".$total[2].")");
        }else{
        $objPHPExcel->getActiveSheet()->setCellValue($field[count($fieldName)].'2', $total[1]);
        }
      }else{
        $objPHPExcel->getActiveSheet()->setCellValue($field[count($fieldName)].'1', '总金额');
        $objPHPExcel->getActiveSheet()->setCellValue($field[count($fieldName)].'2', $total."(单位:万元)");
      }
    }
    $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);

    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:application/vnd.ms-execl");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");;
    header('Content-Disposition:attachment;filename="'.$title.'.xls"');
    header("Content-Transfer-Encoding:binary");
    $objWriter->save('php://output');
    exit();
}
最近使用到很多接口,本人比较懒,都是用别人的sdk ,希望对你有用,
欢迎关注 欢迎指正!!!
最佳答案
评论( 相关
后面还有条评论,点击查看>>