PHP生成excel(3)
这一节主要是设置背景颜色、边框、字体大小、表格宽度
效果图

代码如下
<?php
header("Content-Type:text/html;charset=utf-8");
require "./db.php";
require "./PHPExcel/PHPExcel.php"; //连接数据库
$db = Db::getInstance(); //实例化excel类
$objPHPExcel = new PHPExcel();
$objSheet = $objPHPExcel->getActiveSheet();//获取当前活动单元格 //设置水平居中
$objSheet->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER); //设置字体
$objSheet->getDefaultStyle()->getFont()->setName('微软雅黑')->setSize('13');
$objSheet->getStyle('A2:Z2')->getFont()->setSize('15')->setBold(True);
$objSheet->getStyle('A3:Z3')->getFont()->setSize('15')->setBold(True); //设置背景颜色 //查询年级
$gradeInfo = $db->getResult("select `grade` from user group by grade order by grade asc");
//查询班级
$index = 0;
foreach ($gradeInfo as $k=>$val) {
$gradeIndex = getCells($index * 2);
$objSheet->setCellValue($gradeIndex.'2','高'.$val['grade']);
$classInfo = $db->getResult("select distinct(class) from user where grade = ".$val['grade']." order by class");
foreach ($classInfo as $j=>$vl) {
$nameIndex = getCells($index * 2);//姓名列
$scoreIndex = getCells($index * 2 + 1);//分数列 $info = $db->getResult("select username,score from user where class=".$vl['class']." AND grade = ".$val['grade']." order by score desc");
$objSheet->mergeCells($nameIndex.'3:'.$scoreIndex.'3'); //设置班级背景颜色
$objSheet->getStyle($nameIndex.'3:'.$scoreIndex.'3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('51e351'); //设置班级边框
$classBorderStyle = getBorderStyle('e351ca');
$objSheet->getStyle($nameIndex.'3:'.$scoreIndex.'3')->applyFromArray($classBorderStyle); $objSheet->setCellValue($nameIndex.'3',$vl['class'].'班'); //设置自动换行,注意需要用双引号换行符
$objSheet->getStyle($nameIndex)->getAlignment()->setWrapText(true);
$objSheet->setCellValue($nameIndex.'4',"姓名\n换行")->setCellValue($scoreIndex.'4','分数'); //超长数字设置格式
$objSheet->getStyle($scoreIndex)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);
$m = 5;
foreach ($info as $v) {
//$objSheet->setCellValue($nameIndex.$m,$v['username'])->setCellValue($scoreIndex.$m,$v['score']);//填充学生信息
//->setValueExplicit('25', PHPExcel_Cell_DataType::TYPE_NUMERIC) //假如有超长数字
$objSheet->setCellValue($nameIndex.$m,$v['username'])->setCellValueExplicit ($scoreIndex.$m,$v['score'].'123123123213123',PHPExcel_Cell_DataType::TYPE_STRING);
$m++;
}
$index++;
}
$endGradeIndex = getCells(($index*2-1));//获得每个年级终止单元格
//合并年级单元格
$objSheet->mergeCells($gradeIndex.'2:'.$endGradeIndex.'2');//('A2:F2')
$objSheet->getStyle($gradeIndex.'2:'.$endGradeIndex.'2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('e36951');
//设置边框
$gradeBorderStyle = getBorderStyle('e3df51');
$objSheet->getStyle($gradeIndex.'2:'.$endGradeIndex.'2')->applyFromArray($gradeBorderStyle);
} function getCells($index) {
$arr = range('A','Z');
return $arr[$index];
} //获取不同的边框
function getBorderStyle($color) {
$styleArray = array(
'borders'=>array(
'outline'=>array(
'style'=>PHPExcel_Style_Border::BORDER_THICK,
'color'=>array('rgb'=>$color)
)
)
);
return $styleArray;
} //按照指定格式生成excel文件
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');//生成excel 2007
$objWriter->save('style.xlsx');
PHP生成excel(3)的更多相关文章
- 两种方式实现java生成Excel
Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...
- 使用node.js生成excel报表下载(excel-export express篇)
引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种 ...
- Python实战 :2017国考职业表excel转数据库,再查询生成excel
最近看2017年国考的职业表,多而杂,不好过滤我想要的信息,特此把它转成Sqlite3数据库,再从数据库里把查询结果导出成excel,方便找职业. (后附上整套代码) 环境:python2.7 x ...
- asp.net+nopi生成Excel遇到设置单元格值null问题
Npoi 生成excel报表功能很不错,功能也不用给大家介绍了.首先看遇到的问题吧! FileStream file = new FileStream(Server.MapPath("Tem ...
- phpexcel生成excel并下载
Loader::import('PHPExcel.Classes.PHPExcel'); // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use thin ...
- java动态生成excel打包下载
@SuppressWarnings("unchecked") public String batchExport() throws DBException{ @SuppressWa ...
- JAVA利用JXL导出/生成 EXCEL
/** * 导出导出采暖市场部收入.成本.利润明细表 * @author JIA-G-Y */ public String exporExcel(String str) { String str=Se ...
- 在.NET中使用EPPlus生成Excel报表 .
--摘抄自:http://blog.csdn.net/zhoufoxcn/article/details/14112473 在开发.NET应用中可能会遇到需要生成带图表(Chart)的Excel报表的 ...
- 【java】:生成excel
//生成报表公用方法 //excelName: 生成的文件名 //list:时间/日期/描述 //listSelectFiled: 标题 //showContent : 文件内容bean //生成 ...
- asp.net 生成 excel导出保存时, 解决迅雷下载aspx页面问题
网络上搜索,一大堆废话,以下为简单的导出生成Excel代码: string excelFile = Server.MapPath("~/SB/UpFile/20151104111008/Bo ...
随机推荐
- How To Configure VMware fencing using fence
本文主要简单介绍一下如何在RHEL 7 Pacemaker中配置一个fence_vmware_soap类型的STONITH设备(仅供测试学习). STONITH是Shoot-The-Other-Nod ...
- 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x ...
- linux无人值守安装介绍(一)
一.术语解释 PXE(Pre-boot ExecutionEnvironment)是由Intel设计的协议,它可以使计算机通过网络而不是从本地硬盘.光驱等设备启动.现代的网卡,一般都内嵌支持PXE的R ...
- 【LeetCode】Reverse Nodes in k-Group(k个一组翻转链表)
这是LeetCode里的第25道题. 题目要求: 给出一个链表,每 k 个节点一组进行翻转,并返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度.如果节点总数不是 k 的整数倍,那么将最 ...
- Leetcode 394.字符串编码
字符串编码 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正 ...
- .NET重构(五):存储过程、触发器和函数的区别
导读:在触发器的学习过程中,师傅讲了它的耦合性高,建议我能用存储过程,那到底什么是存储过程呢,自己也不是特别了解,还有就是,触发器也算是一种特殊的存储过程,为什么就不建议多用呢?接下来,就谈谈触发器. ...
- AFNetWorking出现code=-1016错误解决办法
报错类似: 2015-12-09 15:58:03.062 Carloans[14328:2300485] Error Domain=com.alamofire.error.serialization ...
- [luoguP1053] 篝火晚会(贪心 + 乱搞)
传送门 假设第一个位置是1,那么枚举它的左右两边是谁,有两种情况,然后可以递推求出序列. 然后可以贪心,两个序列有多少个不同的数,答案就是多少,具体为啥,yy一下即可 然后就是判断递推求出的序列和目标 ...
- BZOJ1221 [HNOI2001] 软件开发 【费用流】
题目 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消毒毛 ...
- [COI2007] Patrik 音乐会的等待 (单调栈,模拟)
题目描述 N个人正在排队进入一个音乐会.人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人.队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的. ...