zoukankan      html  css  js  c++  java
  • phpexcel导出成绩表

    效果图如下:

    代码如下:代码注释不全,请大家参考phpexcel中文帮助手册

    <?php
     require_once 'PHPExcel.php';
      function bfb($n)
        {
            return $n*100 . '%';
        }
     $objPHPExcel = new PHPExcel();// 创建一个处理对象实例
     $objPHPExcel->createSheet();//创建sheet
     $objPHPExcel->setActiveSheetIndex(0);
     $objActSheet = $objPHPExcel->getActiveSheet();
     $column_number = 6;
     //设置表格标题
     $objActSheet->setCellValue('A1', '2016级一班   学科学生成绩记载表');
     //设置字体大小
     $objActSheet->getStyle('A1')->getFont()->setName('宋体');
    
     $objActSheet->getStyle('A1')->getFont()->setSize(40);
    
     $objActSheet->getStyle('A1')->getFont()->setBold(true);
    
     //合并标题单元格
    
     $objActSheet->getStyle('B2')->getAlignment()->applyFromArray(
         array(
    
         'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
    
         'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
    
         'rotation' => 0,
    
         'wrap' => true
    
         )
     );
     $styleArray1 = array(
      'font' => array(
        'bold' => false,
        'size'=>12,
        'color'=>array(
          'argb' => '00000000',
        ),
      ),
      'alignment' => array(
        'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
      ),
    );
    // 将A1单元格设置为加粗,居中
    $objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray($styleArray1);
    $objActSheet->mergeCells( 'A1:'.chr(ord('A')+$column_number-1).'1');//合并标题
    $objPHPExcel->getActiveSheet()->mergeCells('A2:A3');
    $objActSheet->setCellValue('A2', '姓名');
    $objPHPExcel->getActiveSheet()->getStyle('A2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->mergeCells('B2:C2');
    $objActSheet->setCellValue('B2', '成绩');
    $objPHPExcel->getActiveSheet()->getStyle('B2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('B2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objActSheet->setCellValue('B3', '分数');
    $objActSheet->setCellValue('C3', '等级');
    $objPHPExcel->getActiveSheet()->getStyle('B3')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('B3')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('C3')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('C3')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    ###########################
    $objPHPExcel->getActiveSheet()->mergeCells('D2:D3');
    $objActSheet->setCellValue('D2', '姓名');
    $objPHPExcel->getActiveSheet()->getStyle('D2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('D2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->mergeCells('E2:F2');
    $objActSheet->setCellValue('E2', '成绩');
    $objPHPExcel->getActiveSheet()->getStyle('E2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('E2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objActSheet->setCellValue('E3', '分数');
    $objActSheet->setCellValue('F3', '等级');
    $objPHPExcel->getActiveSheet()->getStyle('E3')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('E3')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('F3')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('F3')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    #########################
    $styleThinBlackBorderOutline = array(
        'borders' => array (
           'outline' => array (
              'style' => PHPExcel_Style_Border::BORDER_THIN,  //设置border样式
              //'style' => PHPExcel_Style_Border::BORDER_THICK, 另一种样式
              'color' => array ('argb' => 'FF000000'),     //设置border颜色
          ),
       ),
    );
    $lie = array('A','B','C','D','E','F');
    foreach($lie as $l){
        $objPHPExcel->getActiveSheet()->getColumnDimension($l)->setWidth(15);
    }
    $data1 = array(
                  array('name'=>'学生姓名1','code'=>90,'dj'=>'优'),
                  array('name'=>'学生姓名2','code'=>91,'dj'=>'优'),
                  array('name'=>'学生姓名3','code'=>92,'dj'=>'优'),
                  array('name'=>'学生姓名4','code'=>93,'dj'=>'优'),
                  array('name'=>'学生姓名5','code'=>94,'dj'=>'优'),
                  array('name'=>'学生姓名6','code'=>95,'dj'=>'优'),
                  array('name'=>'学生姓名7','code'=>96,'dj'=>'优')
    );
    $data2 = array(
                  array('name'=>'学生姓名1','code'=>90,'dj'=>'优'),
                  array('name'=>'学生姓名2','code'=>91,'dj'=>'优'),
                  array('name'=>'学生姓名3','code'=>92,'dj'=>'优'),
                  array('name'=>'学生姓名4','code'=>93,'dj'=>'优'),
                  array('name'=>'学生姓名5','code'=>94,'dj'=>'优'),
                  array('name'=>'学生姓名6','code'=>95,'dj'=>'优'),
                  array('name'=>'学生姓名7','code'=>96,'dj'=>'优')
    );
    $j = $i = 4;
    $code = 0;
    foreach($data1 as $k=>$v){
            $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $v['name']);
            $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $v['code']);
            $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $v['dj']);
            $objPHPExcel->getActiveSheet()->getStyle('A'.$i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A'.$i)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('B'.$i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('B'.$i)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('C'.$i)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('C'.$i)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(30);
            $code += $v['code'];
            $i++;
    }
    foreach($data2 as $k=>$v){
            $objPHPExcel->getActiveSheet()->setCellValue('D' . $j, $v['name']);
            $objPHPExcel->getActiveSheet()->setCellValue('E' . $j, $v['code']);
            $objPHPExcel->getActiveSheet()->setCellValue('F' . $j, $v['dj']);
            $objPHPExcel->getActiveSheet()->getStyle('D'.$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('D'.$j)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('E'.$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('E'.$j)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('F'.$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('F'.$j)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getRowDimension($j)->setRowHeight(30);
            $code += $v['code'];
            $j++;
    }
    $count = count($data1)+count($data2);
    $pjf = $code / $count ;
    $hgl = bfb(1);
    $ysl = bfb(1);
    if($i != $j){
      die('导出成绩表出错');
    }
    $endindex1 = $i;
    $endindex2 = $i+1;
    $endindex3 = $i+2;
    $objPHPExcel->getActiveSheet()->setCellValue('A' . $endindex1, '总人数');
    $objPHPExcel->getActiveSheet()->getStyle('A'.$endindex1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A'.$endindex1)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('B' . $endindex1, $count);
    $objPHPExcel->getActiveSheet()->getStyle('B'.$endindex1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('B'.$endindex1)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('C' . $endindex1, '合格人数');
    $objPHPExcel->getActiveSheet()->getStyle('C'.$endindex1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('C'.$endindex1)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('D' . $endindex1, $count);
    $objPHPExcel->getActiveSheet()->getStyle('D'.$endindex1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('D'.$endindex1)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('E' . $endindex1, '优生人数');
    $objPHPExcel->getActiveSheet()->getStyle('E'.$endindex1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('E'.$endindex1)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('F' . $endindex1, $count);
    $objPHPExcel->getActiveSheet()->getStyle('F'.$endindex1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('F'.$endindex1)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('A' . $endindex2, '平均分');
    $objPHPExcel->getActiveSheet()->getStyle('A'.$endindex2)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('A'.$endindex2)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('B' . $endindex2, $pjf);
    $objPHPExcel->getActiveSheet()->getStyle('B'.$endindex2)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('B'.$endindex2)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('C' . $endindex2, '合格率');
    $objPHPExcel->getActiveSheet()->getStyle('C'.$endindex2)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('C'.$endindex2)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('D' . $endindex2, $hgl);
    $objPHPExcel->getActiveSheet()->getStyle('D'.$endindex2)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('D'.$endindex2)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('E' . $endindex2, '优生率');
    $objPHPExcel->getActiveSheet()->getStyle('E'.$endindex2)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('E'.$endindex2)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('F' . $endindex2, $ysl);
    $objPHPExcel->getActiveSheet()->getStyle('F'.$endindex2)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('F'.$endindex2)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    //登分人签名
    $writename = '杨捷成';
    $objPHPExcel->getActiveSheet()->setCellValue('E' . $endindex3, '登分人签名');
    $objPHPExcel->getActiveSheet()->getStyle('E'.$endindex3)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('E'.$endindex3)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->setCellValue('F' . $endindex3, $writename);
    $objPHPExcel->getActiveSheet()->getStyle('F'.$endindex3)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle('F'.$endindex3)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
    $objPHPExcel->getActiveSheet()->getStyle('F'.$endindex3)->getFill()->getStartColor()->setARGB('FF808080'); // 将背景设置为浅粉色
    //粗体下划线有背景色
    $objPHPExcel->getActiveSheet()->getStyle('F'.$endindex3)->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
    
    //***********************画出单元格边框*****************************  
    $styleArray = array(  
        'borders' => array(  
            'allborders' => array(  
                //'style' => PHPExcel_Style_Border::BORDER_THICK,//边框是粗的  
                'style' => PHPExcel_Style_Border::BORDER_THIN,//细边框  
                //'color' => array('argb' => 'FFFF0000'),  
            ),  
        ),  
    ); 
    $objPHPExcel->getActiveSheet()->getStyle('A1:F'.$endindex2)->applyFromArray($styleArray);//这里就是画出从单元格A5到N5的边框,看单元格最右边在哪哪个格就把这个N改为那个字母替代 
    //***********************画出单元格边框结束*****************************  
    $path = 'title.xlsx';
      // 生成2007excel格式的xlsx文件
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
     $objWriter->setOffice2003Compatibility(true);
     //echo $i;
     $objWriter->save($path);
    
    ?>

     代码存在冗余,后面会做封装!O(∩_∩)O哈哈~

  • 相关阅读:
    day01
    ASP.NET 最全的POST提交数据和接收数据 —— (1) 用url传参方式
    Quartz.NET 入门,带C#实例
    asp.net 后台注册(调用)JS
    DataSet和List 泛型之间互相转换 (转载)
    .NET异步编程总结----四种实现模式
    VS2013 “未找到与约束 ContractName Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAttachedCollectionService RequiredTypeIdentity Microsoft.Internal.VisualStudio.PlatformUI.ISolutionAttachedCollectionService 匹配的导出”
    Sql Server 删除所有表、视图、存储过程
    GPS定位,根据经纬度查询附近地点的经纬度-sql方法实现
    GPS定位,经纬度附近地点查询–C#实现方法
  • 原文地址:https://www.cnblogs.com/YangJieCheng/p/6131870.html
Copyright © 2011-2022 走看看