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

  1. $dir = dirname(__FILE__);
  2. require $dir . "/PHPExcel/db.php";
  3. require $dir . "/PHPExcel/PHPExcel.php";
  4. $object = new PHPExcel();
  5. $db = new db($config);
  6.  
  7. $objSheet = $object->getActiveSheet();
  8.  
  9. //文字居中和文字设置
  10. $objSheet->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  11. $objSheet->getDefaultStyle()->getFont()->setName("微软雅黑")->setSize(14);
  12. $objSheet->getStyle("A2:X2")->getFont()->setSize(20)->setBold(TRUE);
  13. $objSheet->getStyle("A3:X3")->getFont()->setSize(16)->setBold(TRUE);
  14.  
  15. //设置行高
  16. $objSheet->getRowDimension(2)->setRowHeight(35);
  17. $objSheet->getRowDimension(3)->setRowHeight(25);
  18. $objSheet->getRowDimension(4)->setRowHeight(20);
  19.  
  20. //填充颜色
  21. $objSheet->getStyle("A2:X2")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('ffff00');
  22. $objSheet->getStyle("A3:X3")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('ff0000');
  23.  
  24. //sheet名长
  25. $objSheet->setTitle("成绩表");
  26.  
  27. //查询所有的年级
  28. $i = 0;
  29. $data_g = $db->getAllGrade();
  30. foreach($data_g as $g_k=>$g_v) {
  31.  
  32. //查询每个年级有几个班
  33. $data_c = $db->getAllClassBYGrade($g_v['grade']);
  34.  
  35. //获取年级所在单元格并填充单元格
  36. $gradeIndex = $i*2;
  37. $grade = getCells($gradeIndex);
  38. $objSheet->setCellValue($grade."2", $g_v['grade']."年级");
  39.  
  40. foreach($data_c as $c_v) {
  41.  
  42. //查询所有学生成绩
  43. $data = $db->getDataByClass($c_v['class'], $g_v['grade']);
  44.  
  45. //获取姓名和分数所在单元格
  46. $nameIndex = $i*2;
  47. $scoreIndex = $i*2+1;
  48. $index_c = getCells($nameIndex);
  49. $score = getCells($scoreIndex);
  50.  
  51. //填充班级行
  52. $objSheet->setCellValue($index_c."3", $c_v['class']."班");
  53.  
  54. //填充栏目名称
  55. $objSheet->setCellValue($index_c."4", "姓名")->setCellValue($score."4", "分数");
  56. //$objSheet->getStyle($index_c)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
  57. //自动换行
  58. //$objSheet->getStyle($nameIndex)->getAlignment()->setWrapText(true);
  59.  
  60. //开始输出内容
  61. $j = 5;
  62. foreach($data as $v) {
  63. $objSheet->setCellValue($index_c.$j, $v['name'])->setCellValue($score.$j, ' '.$v['score']);
  64. //设置行高
  65. $objSheet->getRowDimension($j)->setRowHeight(20);
  66. $j++;
  67. }
  68. $i++;
  69.  
  70. //合并班级单元格
  71. $endClass = getCells($i*2-1);
  72. $objSheet->mergeCells($index_c."3:".$endClass."3");
  73.  
  74. //设置班级的边框
  75. $styleArray = borderStyle('0000FF');
  76. $objSheet->getStyle($index_c."3:".$endClass."3")->applyFromArray($styleArray);
  77. }
  78.  
  79. //合并年级单元格
  80. $endGrade = getCells($i*2-1);
  81. $objSheet->mergeCells($grade."2:".$endGrade."2");
  82.  
  83. //设置年级的边框
  84. $styleArray = borderStyle('00FF00');
  85. $objSheet->getStyle($grade."2:".$endGrade."2")->applyFromArray($styleArray);
  86.  
  87. }
  88.  
  89. //通过传入参数(1-26)得到A-Z的字母列
  90. function getCells($index) {
  91. $str = range(A, Z);
  92. return $str[$index];
  93. }
  94.  
  95. //设置边框样式
  96. function borderStyle($color) {
  97. $styleArray = array(
  98. 'borders' => array(
  99. 'outline' => array(
  100. 'style' => PHPExcel_Style_Border::BORDER_THICK,
  101. 'color' => array('rgb' => $color),
  102. ),
  103. ),
  104. );
  105. return $styleArray;
  106. }
  107.  
  108. header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  109. header('Content-Disposition: attachment;filename="01simple.xlsx"');
  110. header('Cache-Control: max-age=0');
  111. $objWriter = PHPExcel_IOFactory::createWriter($object, 'Excel5');
  112. $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. cocos2dx tag和zorder

    当一个渲染对象加入到两外一个渲染对象中时,可以有两个可选参数,一个时tag,一个是order virtual void addChild(CCNode * child); virtual void a ...

  2. Android开发匹配字符笔记

    Windows下的回车换行符是\r\n,而Linux下的回车换行符是\n 所以,在windows下可以用\r\n,而在linux下要用\n 并且还发现在linux下(既在android上开发)需要匹配 ...

  3. strdup函数的使用方法

    函数名: strdup 功  能: 将串复制到新建的位置处 用  法: char *strdup(char *str): 这个函数在linux的man手冊里解释为: The strdup() func ...

  4. Android实现 ScrollView + ListView无滚动条滚动

    Android实现 ScrollView+ListView无滚动条滚动,即ListView的数据会全部显示完,但Listview无滚动条. 核心代码如下: 1. NoScrollListView.ja ...

  5. BNUOJ29065鸣人的查克拉

    鸣人的查克拉 Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: ...

  6. js 去除字符串左右两端的空格

    <script type="text/javascript"> function trim(str){ //删除左右两端的空格      return str.repl ...

  7. UVa 10806 Dijkstra,Dijkstra(最小费用最大流)

    裸的费用流.往返就相当于从起点走两条路到终点. 按题意建图,将距离设为费用,流量设为1.然后增加2个点,一个连向节点1,流量=2,费用=0;结点n连一条同样的弧,然后求解最小费用最大流.当且仅当最大流 ...

  8. RAW模板开发--入口文件官方规范

    每个人都有自己的习惯,为了RAW模板能进一步推广,使RAW模板的开发也更有条理,所以写了这个文章. 规范1格式: <?php /*RAW标记声明-start*/ /*RAW标记声明-over*/ ...

  9. python自学笔记(二)python基本数据类型之字符串处理

    一.数据类型的组成分3部分:身份.类型.值 身份:id方法来看它的唯一标识符,内存地址靠这个查看 类型:type方法查看 值:数据项 二.常用基本数据类型 int 整型 boolean 布尔型 str ...

  10. HTML+CSS笔记 CSS入门续集

    继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代(标签). 语法: p{color:red;} <p> ...