码迷,mamicode.com
首页 > Web开发 > 详细

PHPExcel 生成excel统计表格

时间:2015-07-10 12:58:48      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

db.php为数据库操作类, $config为数据库配置,PHPExcel版本为PHPExcel_1.8.0,  php代码:

$dir = dirname(__FILE__);
require $dir . "/PHPExcel/db.php";
require $dir . "/PHPExcel/PHPExcel.php";
$object = new PHPExcel();
$db = new db($config);

$objSheet = $object->getActiveSheet();

//文字居中和文字设置
$objSheet->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objSheet->getDefaultStyle()->getFont()->setName("微软雅黑")->setSize(14);
$objSheet->getStyle("A2:X2")->getFont()->setSize(20)->setBold(TRUE);
$objSheet->getStyle("A3:X3")->getFont()->setSize(16)->setBold(TRUE);

//设置行高
$objSheet->getRowDimension(2)->setRowHeight(35);
$objSheet->getRowDimension(3)->setRowHeight(25);
$objSheet->getRowDimension(4)->setRowHeight(20);

//填充颜色
$objSheet->getStyle("A2:X2")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(‘ffff00‘);
$objSheet->getStyle("A3:X3")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(‘ff0000‘);

//sheet名长
$objSheet->setTitle("成绩表");

//查询所有的年级
$i = 0;
$data_g = $db->getAllGrade();
foreach($data_g as $g_k=>$g_v) {

    //查询每个年级有几个班
    $data_c = $db->getAllClassBYGrade($g_v[‘grade‘]);

    //获取年级所在单元格并填充单元格
    $gradeIndex = $i*2;
    $grade = getCells($gradeIndex);
    $objSheet->setCellValue($grade."2", $g_v[‘grade‘]."年级");

    foreach($data_c as $c_v) {

        //查询所有学生成绩
        $data = $db->getDataByClass($c_v[‘class‘], $g_v[‘grade‘]);

        //获取姓名和分数所在单元格
        $nameIndex = $i*2;
        $scoreIndex = $i*2+1;
        $index_c = getCells($nameIndex);
        $score = getCells($scoreIndex);

        //填充班级行
        $objSheet->setCellValue($index_c."3", $c_v[‘class‘]."班");

        //填充栏目名称
        $objSheet->setCellValue($index_c."4", "姓名")->setCellValue($score."4", "分数");
        //$objSheet->getStyle($index_c)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
        //自动换行
        //$objSheet->getStyle($nameIndex)->getAlignment()->setWrapText(true);

        //开始输出内容
        $j = 5;
        foreach($data as $v) {
            $objSheet->setCellValue($index_c.$j, $v[‘name‘])->setCellValue($score.$j, ‘ ‘.$v[‘score‘]);
            //设置行高
            $objSheet->getRowDimension($j)->setRowHeight(20);
            $j++;
        }
        $i++;

        //合并班级单元格
        $endClass = getCells($i*2-1);
        $objSheet->mergeCells($index_c."3:".$endClass."3");

        //设置班级的边框
        $styleArray = borderStyle(‘0000FF‘);
        $objSheet->getStyle($index_c."3:".$endClass."3")->applyFromArray($styleArray);
    }

    //合并年级单元格
    $endGrade = getCells($i*2-1);
    $objSheet->mergeCells($grade."2:".$endGrade."2");

    //设置年级的边框
    $styleArray = borderStyle(‘00FF00‘);
    $objSheet->getStyle($grade."2:".$endGrade."2")->applyFromArray($styleArray);

}

//通过传入参数(1-26)得到A-Z的字母列
function getCells($index) {
    $str = range(A, Z);
    return $str[$index];
}

//设置边框样式
function  borderStyle($color) {
    $styleArray = array(
        ‘borders‘ => array(
            ‘outline‘ => array(
                ‘style‘ => PHPExcel_Style_Border::BORDER_THICK,
                ‘color‘ => array(‘rgb‘ => $color),
            ),
        ),
    );
    return $styleArray;
}

header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);
header(‘Content-Disposition: attachment;filename="01simple.xlsx"‘);
header(‘Cache-Control: max-age=0‘);
$objWriter = PHPExcel_IOFactory::createWriter($object, ‘Excel5‘);
$objWriter->save(‘php://output‘);

数据库结构:

技术分享

效果图:

技术分享

技术分享

PHPExcel 生成excel统计表格

标签:

原文地址:http://www.cnblogs.com/Caoxt/p/4635112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!