首先自定义导出,我用的是一个下拉多选框的一个插件,百度一下就可找到,为了样式好看。如图

value值对应的是你数据库中查出的字段值,text对应的是你的表头信息。ok,然后我是通过GET把这俩个值传到我们控制器的。

引入导出类,这个就不多说。

然后就是查询数据库,把数据处理成一个二维数组,进行循环遍历输出在表格中

我的数据格式是1对多的关系,一个班主任对应多个班级,那么我要在表格中合并这个班主任,$count是对班级的统计,当班主任

对应的班级数量>1时,才合并。

            $str=$_GET['str'];//勾选$str2=$_GET['str2'];//表头$td_field=explode(',', $str2);//表头$field=explode(',', $str);//勾选$objPHPExcel=new \PHPExcel();$objPHPExcel->getProperties()->setCreator('http://www.jb51.NET')->setLastModifiedBy('http://www.jb51.Net')->setTitle('Office 2007 XLSX Document')->setSubject('Office 2007 XLSX Document')->setDescription('Document for Office 2007 XLSX, generated using PHP classes.')->setKeywords('office 2007 openxml php')->setCategory('Result file');$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$td_field[0])->setCellValue('B1',$td_field[1])->setCellValue('C1',$td_field[2])->setCellValue('D1',$td_field[3])->setCellValue('E1',$td_field[4])->setCellValue('F1',$td_field[5])->setCellValue('G1',$td_field[6])->setCellValue('H1',$td_field[7])->setCellValue('I1',$td_field[8])->setCellValue('J1',$td_field[9])->setCellValue('K1',$td_field[10])->setCellValue('L1',$td_field[11])->setCellValue('M1',$td_field[12]);$i=2;//->mergeCells('A18:E22')合并单元格;->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER) 垂直居中foreach($new_array as $k=>$v){if($v["count"] > 1){$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$i,$v["$field[0]"])->setCellValue('B'.$i,$v["$field[1]"])->setCellValue('C'.$i,$v["$field[2]"])->setCellValue('D'.$i,$v["$field[3]"])->setCellValue('E'.$i,$v["$field[4]"])->setCellValue('F'.$i,$v["$field[5]"])->setCellValue('G'.$i,$v["$field[6]"])->setCellValue('H'.$i,$v["$field[7]"])->setCellValue('I'.$i,$v["$field[8]"])->setCellValue('J'.$i,$v["$field[9]"])->setCellValue('K'.$i,$v["$field[10]"])->setCellValue('L'.$i,$v["$field[11]"])->setCellValue('M'.$i,$v["$field[12]"])->mergeCells('A'.$i.':A'.($i+$v["count"]-1))->mergeCells('B'.$i.':B'.($i+$v["count"]-1))->mergeCells('C'.$i.':C'.($i+$v["count"]-1))->mergeCells('D'.$i.':D'.($i+$v["count"]-1))->mergeCells('E'.$i.':E'.($i+$v["count"]-1))->mergeCells('F'.$i.':F'.($i+$v["count"]-1))->mergeCells('G'.$i.':G'.($i+$v["count"]-1))->mergeCells('H'.$i.':H'.($i+$v["count"]-1))->mergeCells('I'.$i.':I'.($i+$v["count"]-1));$objPHPExcel->setActiveSheetIndex(0)->getStyle('A'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);$objPHPExcel->setActiveSheetIndex(0)->getStyle('B'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);$objPHPExcel->setActiveSheetIndex(0)->getStyle('C'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);$objPHPExcel->setActiveSheetIndex(0)->getStyle('D'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);$objPHPExcel->setActiveSheetIndex(0)->getStyle('E'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);$objPHPExcel->setActiveSheetIndex(0)->getStyle('F'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);$objPHPExcel->setActiveSheetIndex(0)->getStyle('G'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);$objPHPExcel->setActiveSheetIndex(0)->getStyle('H'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);$objPHPExcel->setActiveSheetIndex(0)->getStyle('I'.$i)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);}else{$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$i,$v["$field[0]"])->setCellValue('B'.$i,$v["$field[1]"])->setCellValue('C'.$i,$v["$field[2]"])->setCellValue('D'.$i,$v["$field[3]"])->setCellValue('E'.$i,$v["$field[4]"])->setCellValue('F'.$i,$v["$field[5]"])->setCellValue('G'.$i,$v["$field[6]"])->setCellValue('H'.$i,$v["$field[7]"])->setCellValue('I'.$i,$v["$field[8]"])->setCellValue('J'.$i,$v["$field[9]"])->setCellValue('K'.$i,$v["$field[10]"])->setCellValue('L'.$i,$v["$field[11]"])->setCellValue('M'.$i,$v["$field[12]"]);}$i++;}$objPHPExcel->getActiveSheet()->setTitle('日报');$objPHPExcel->setActiveSheetIndex(0);//$filename=urlencode('数据表').'_'.date('Y-m-dHis');$filename='日报'.'_'.date('Y-m-dHis');//生成xls文件header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="'.$filename.'.xls"');header('Cache-Control: max-age=0');$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter->save('php://output');exit;
												

PHPExcel的自定义导出及合并单元格相关推荐

  1. springboot项目导出excel 合并单元格表格

    springboot项目导出excel 合并单元格表格 导出效果 业务controller 业务数据 业务实体类 注解MyExcel.java 注解 MyExcels 导出工具类MyExcelUtil ...

  2. hutool导出excel大数据_Hutool excel导出并合并单元格

    一.Hutool介绍 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的&q ...

  3. easypoi 模板导出兼容合并单元格功能

    最新在使用easypoi,使用注解导出和模板导出的方式,现在主要就模板导出合并单元格一些坑和解决方法. 首先我建议刚接触的同学看这篇文章,很详细,功能也比较全面,比较感谢这篇文章的原创作者,网站1:e ...

  4. java导出excel 边框不全_POI 导出Excel合并单元格后部分边框不显示

    用户需要导出自定义表格,其中合并单元格样式遇到的问题,合并后只显示第一行第一列的边框,其他边框不显示,于是遍查百度,寻到一点思路 ①了解Excel绘制原理 ②了解绘制Excel顺序 ③绘制Excel单 ...

  5. JAVA 浏览器下载excel,自定义样式:合并单元格,设置多种背景填充颜色,冻结窗格

    添加依赖: <!-- POI --><dependency><groupId>org.apache.poi</groupId><artifactI ...

  6. poi导出Excel合并单元格、设置打印参数页眉页脚等

    由于生成文件不能落地,使用SXSSFWorkBook来对excel的导出工作 生成excel步骤: 1.创建workbook SXSSFWorkbook workbook=new SXSSFWorkb ...

  7. java导出excel合并单元格

    今天是2018最后一天了,废话就不多说了直接上干货吧! 1.java导出excel用到POI所有jar包 ,大家可以直接到下面地址下载点击打开链接 2.导出excel的方法 package org; ...

  8. POI导出EXCEL合并单元格对象嵌套List数据

    导出EXCEL 在实际的开发过程当中,我们会遇到一些比较复杂的导出需求,例如需要导出的实体类中需要嵌套集合对象等,正好最近碰到了所以分享出来,希望对大家有帮助 一.POI是什么 简单的说就是Apach ...

  9. java POI导出excel,合并单元格边框消失

    业务是导出一个报表,要求有一个跨多列的表头,肯定要用到合并单元格,但合并后边框消失.网上的一些解决办法是重写合并单元格方法,但弄清楚原因后,其实没必要. 原来是这样的: 合并后就第一个有边框,其余全成 ...

最新文章

  1. Angular 可观察对象(Observable)
  2. nginx php_admin_value,新手求租 能否贴一下nginx的静态配置
  3. 分布式服务框架 dubbo/dubbox 入门示例
  4. unity(2017.3) C# 常用API
  5. Logistic 回归(sigmoid函数,手机的评价,梯度上升,批处理梯度,随机梯度,从疝气病症预测病马的死亡率...
  6. 如何熟悉一个开源项目
  7. 著名开源项目_著名开源项目案例研究
  8. Webpack入门教程三十
  9. 标准ACL(Standard ACL)
  10. java过滤器Filter
  11. Vector For All (slight return)
  12. MySQL(密码恢复及设置)
  13. 乐乐音乐-KSC歌词图片生成器
  14. Python世界里的魔术方法(一)
  15. nodejs addon实现回调函数事件
  16. 动态规划——爬楼梯问题(爬楼梯+最省力爬楼梯)
  17. 【串行通信中的】同步通信和异步通信的区别
  18. 【180730】WinForm打地鼠小游戏源码
  19. Java浅拷贝和深拷贝(一文足矣),及String类型的坑。
  20. 机器学习理论: PAC学习

热门文章

  1. 2021一线互联网校招面试真题解析,看完这一篇你就懂了
  2. C#报错:试图加载格式不正确的程序 0x8007000b
  3. 中台质疑背后的再“进化”
  4. 办公软件excel的实用技巧
  5. Python matplot画柱状图(一)
  6. 【稳定性day1】从DBA到运维架构总监之路 - 专注的力量
  7. php连接mysql指定表名_php mysql获取指定数据库所有表名_PHP教程
  8. 幼师学计算机心得体会怎么写,幼儿教师理论学习心得多篇
  9. JavaScript数组空位的处理
  10. 为了学(mo)习(yu),我竟开发了这样一个插件