zoukankan      html  css  js  c++  java
  • 导出表格基本版

    <?php
    // +----------------------------------------------------------------------
    // | OneThink [ WE CAN DO IT JUST THINK IT ]
    // +----------------------------------------------------------------------
    // | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
    // +----------------------------------------------------------------------
    // | Author: sima <18888830442@vip.qq.com> <http://www.zjzit.cn>
    // +----------------------------------------------------------------------

    namespace AdminModel;
    use ThinkModel;

    /**
    * 用户模型
    * @author sima <18888830442@vip.qq.com>
    */

    class ExcelModel extends CacheModel
    {
    public function exportOrderExcel($title,$cellName,$data)
    {
    $countData = count($data) +2;
    $num = count($cellName) -1 + 65;
    $E = chr($num);
    //引入核心文件
    vendor("PHPExcel.PHPExcel");
    $objPHPExcel = new PHPExcel();
    //定义配置
    $topNumber = 2;//表头有几行占用
    $xlsTitle = iconv('utf-8', 'gb2312', $title);//文件名称
    $fileName = $title.date('_YmdHis');//文件名称
    $cellKey = array(
    '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',
    'AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM',
    'AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'
    );

    //写在处理的前面(了解表格基本知识,已测试)
    $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(22);//所有单元格(行)默认高度
    $objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(17);//所有单元格(列)默认宽度
    // $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);//设置行高度
    // $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);//设置列宽度
    $objPHPExcel->getActiveSheet()->getStyle('A2:'.$E.$countData)->getFont()->setSize(13);//设置文字大小
    // $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);//设置是否加粗
    // $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);// 设置文字颜色
    $objPHPExcel->getActiveSheet()->getStyle('A2:'.$E.$countData)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
    $objPHPExcel->getActiveSheet()->getStyle('A2:'.$E.$countData)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

    //$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置填充颜色
    //$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('#FFFF00');//设置填充颜色

    /* $objPHPExcel->getActiveSheet()->duplicatestyle( $objPHPExcel->getActiveSheet()->getstyle('A1'), 'A1:E13' );
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('#FFFF00');//设置填充颜色*/
    /*$objPHPExcel->getActiveSheet()->getstyle('D13')->getBorders()->getLeft()->getColor()->setARGB('FF993300');
    $objPHPExcel->getActiveSheet()->getstyle('D13')->getBorders()->getTop()->getColor()->setARGB('FF993300');
    $objPHPExcel->getActiveSheet()->getstyle('D13')->getBorders()->getBottom()->getColor()->setARGB('FF993300');*/
    /*$styleThinBlackBorderOutline = array(
    'borders' => array (
    'outline' => array (
    'style' => PHPExcel_Style_Border::BORDER_THIN, //设置border样式
    'color' => array ('argb' => 'FF000000'), //设置border颜色
    ),
    ),);*/
    /* $objPHPExcel->getActiveSheet()->getStyle( 'B1')->applyFromArray($styleThinBlackBorderOutline);
    $objPHPExcel->getActiveSheet()->getStyle( 'B2')->applyFromArray($styleThinBlackBorderOutline);
    $objPHPExcel->getActiveSheet()->getStyle( 'C1')->applyFromArray($styleThinBlackBorderOutline);
    $objPHPExcel->getActiveSheet()->getStyle( 'C2')->applyFromArray($styleThinBlackBorderOutline);
    $objPHPExcel->getActiveSheet()->getStyle( 'C3')->applyFromArray($styleThinBlackBorderOutline);*/
    //$objPHPExcel->getActiveSheet()->getStyle('E3')->getNumberFormat()
    //->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
    //处理表头标题
    $objPHPExcel->getActiveSheet()->mergeCells('A1:'.$cellKey[count($cellName)-1].'1');//合并单元格(如果要拆分单元格是需要先合并再拆分的,否则程序会报错)
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1','汇总表数据');
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(18);
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);

    //处理表头
    foreach ($cellName as $k=>$v)
    {
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellKey[$k].$topNumber, $v[1]);//设置表头数据
    $objPHPExcel->getActiveSheet()->freezePane($cellKey[$k].($topNumber+1));//冻结窗口
    $objPHPExcel->getActiveSheet()->getStyle($cellKey[$k].$topNumber)->getFont()->setBold(true);//设置是否加粗
    $objPHPExcel->getActiveSheet()->getStyle($cellKey[$k].$topNumber)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
    if($v[3] > 0)//大于0表示需要设置宽度
    {
    $objPHPExcel->getActiveSheet()->getColumnDimension($cellKey[$k])->setWidth($v[3]);//设置列宽度
    }
    }
    $objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);
    //设置单元格边框
    $style_array = array(
    'borders' => array(
    'allborders' => array(
    'style' => PHPExcel_Style_Border::BORDER_THIN
    )
    ) );

    $objPHPExcel->getActiveSheet()->getStyle('A1:'.$E.$countData)->applyFromArray($style_array);
    $objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(30);
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB(' #FFFF00');//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle('A2:'.$E.'2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle('A2:'.$E.'2')->getFill()->getStartColor()->setARGB(' #D3B5E9');//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
    if($countData > 7)
    {
    $A = 'A' . ($countData -3) . ':' . $E . $countData;
    $objPHPExcel->getActiveSheet()->getStyle($A)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle($A)->getFill()->getStartColor()->setARGB(' #FFFF00');//设置填充颜色
    $A = 'A' . ($countData -1) . ':' . $E . $countData;
    $objPHPExcel->getActiveSheet()->getStyle($A)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle($A)->getFill()->getStartColor()->setARGB(' #FFC000');//设置填充颜色
    }
    //处理数据
    foreach ($data as $k=>$v)
    {
    $id = $k +1;
    if($id%9 ==0)
    {
    $A = 'A' . ($id + 2) . ':' . $E . ($id+2);

    $objPHPExcel->getActiveSheet()->getStyle($A)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle($A)->getFill()->getStartColor()->setARGB('#FFFF00');//设置填充颜色
    $A = 'A' . ($id + 1) . ':' . $E . ($id+1);
    $objPHPExcel->getActiveSheet()->getStyle($A)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);//设置填充颜色
    $objPHPExcel->getActiveSheet()->getStyle($A)->getFill()->getStartColor()->setARGB('#FFFF00');//设置填充颜色
    }
    foreach ($cellName as $k1=>$v1)
    {
    $objPHPExcel->getActiveSheet()->setCellValue($cellKey[$k1].($k+1+$topNumber), $v[$v1[0]]);
    if($v['end'] > 0)
    {
    if($v1[2] == 1)//这里表示合并单元格
    {
    $objPHPExcel->getActiveSheet()->mergeCells($cellKey[$k1].$v['start'].':'.$cellKey[$k1].$v['end']);
    $objPHPExcel->getActiveSheet()->getStyle($cellKey[$k1].$v['start'])->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    }
    }
    if($v1[4] != "" && in_array($v1[4], array("LEFT","CENTER","RIGHT")))
    {
    $v1[4] = eval('return PHPExcel_Style_Alignment::HORIZONTAL_'.$v1[4].';');
    //这里也可以直接传常量定义的值,即left,center,right;小写的strtolower
    $objPHPExcel->getActiveSheet()->getStyle($cellKey[$k1].($k+1+$topNumber))->getAlignment()->setHorizontal($v1[4]);
    }
    }
    }

    //导出execl
    header('pragma:public');
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
    header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');
    exit;
    }
    }

  • 相关阅读:
    LOJ 2550 「JSOI2018」机器人——找规律+DP
    LOJ 2548 「JSOI2018」绝地反击 ——二分图匹配+网络流手动退流
    2019.4.24 一题(CF 809E)——推式子+虚树
    LOJ 2551 「JSOI2018」列队——主席树+二分
    bzoj 2632 [ neerc 2011 ] Gcd guessing game —— 贪心
    bzoj 1927 星际竞速 —— 最小费用最大流
    bzoj 2535 & bzoj 2109 航空管制 —— 贪心+拓扑序
    bzoj 3671 随机数生成器 —— 暴力
    bzoj 2395 Timeismoney —— 最小乘积生成树
    bzoj 3157 & bzoj 3516 国王奇遇记 —— 推式子
  • 原文地址:https://www.cnblogs.com/simadongyang/p/9060983.html
Copyright © 2011-2022 走看看