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统计表格的更多相关文章

  1. phpexcel生成excel并下载

    Loader::import('PHPExcel.Classes.PHPExcel'); // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use thin ...

  2. PHPExcel生成Excel文件---提示导出文件或者文件扩展名不一致,或导出的文件或文件扩展名无效

    $data = Db::name('shop_cart')->where('phone','15555555555')->select(); $objPHPExcel = new PHPE ...

  3. [moka同学笔记]PHPexcel之excel导出和导入

    原案例来自http://www.sucaihuo.com/有修改 1.目录结构(文件不用解释,应该都可以看得懂,直接看代码)

  4. thinkphp整合系列之phpexcel生成生成excel文件

    在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲 ...

  5. php生成Excel表格

    //引用新建对象<br>require "../phpexcel/Classes/PHPExcel.php"; $excel = new PHPExcel(); 建表格 ...

  6. PHP生成excel表格文件并下载

    本文引自网络,仅供自己学习之用. 利用php导出excel我们大多会直接生成.xls文件,这种方便快捷. function createtable($list,$filename){ header(& ...

  7. 用php 生成 excel 表格

    //引用新建对象require "../phpexcel/Classes/PHPExcel.php"; $excel = new PHPExcel(); 建表格 //Excel表格 ...

  8. 使用PHPExcel解析Excel表格

    安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel 解压后将Classes文件夹移动到ThinkPHP的extend目 ...

  9. JavaWeb开发中采用FreeMarker生成Excel表格

            最近做了一个需求,要求导出一个采购合同的Excel表格,这个表格样式比较多.由于是合同,这个Excel表格里面有好多格式要求,比如结尾处签字那部分就有格式要求.这里介绍种采用FreeM ...

随机推荐

  1. List<T>到XML的序列化与反序列化

    原文 http://hi.baidu.com/shishengli1234/item/f0536f36335390c22f8ec24b Model.RESE_SCH sch1 = new Model. ...

  2. Html 小插件10 即时新闻

    效果图 <!--即时新闻--><iframe name="alimamaifrm" frameborder="0" marginheight= ...

  3. linux c in common use function reference manual

    End User License Agreement guarantees or warranties,大战前得磨刀!!!!! Tips:C Funcs Chk header Modules!

  4. Sonar入门学习

    最近在学习Sonar,配置了好几天,才搭建起来环境,为自己的学习能力感到汗颜,赶紧在此记录一下,所谓好记性不如烂笔头. 1.Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java ...

  5. Android 匿名共享内存C接口分析

    在Android 匿名共享内存驱动源码分析中详细分析了匿名共享内存在Linux内核空间的实现,虽然内核空间实现了匿名共享内存,但仍然需要在用户空间为用户使用匿名共享内存提供访问接口.Android系统 ...

  6. 2013杭州网络赛D题HDU 4741(计算几何 解三元一次方程组)

    Save Labman No.004 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  7. hdu 4612 Warm up 双连通缩点+树的直径

    首先双连通缩点建立新图(顺带求原图的总的桥数,事实上因为原图是一个强连通图,所以桥就等于缩点后的边) 此时得到的图类似树结构,对于新图求一次直径,也就是最长链. 我们新建的边就一定是连接这条最长链的首 ...

  8. 如何:打开 IIS 管理器

    大家好,我叫李京阳,,很高兴认识大家,因为最近我发现很多朋友连打开IIS管理都不知道,可能也是因为各个系统的版本不同,所以今天发一简单贴说说打开IIS管理器. 启动 IIS 7.0 的 IIS 管理器 ...

  9. BZOJ 2733: [HNOI2012]永无乡(treap + 启发式合并 + 并查集)

    不难...treap + 启发式合并 + 并查集 搞搞就行了 --------------------------------------------------------------------- ...

  10. C++运算符详解问题详解

    有关C++运算符的细节,先来看一个题目: int main() { int a[] = {2, 4, 6, 8, 10}, *p, **k; p = a; k = &p; printf(&qu ...