PHPExcel探索之旅---阶段二 设置表格样式
1、设置表格的默认样式为水平居中、垂直居中
getDefaultStyle()函数用来设置默认样式 由活动sheet对象来调用,setVertical()函数和setHorizontal()函数分别用来设置垂直和水平居中
$objSheet -> getDefaultStyle() -> getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER) -> setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
2、设置字体样式和大小
设置默认字体样式和大小时使用getDefaultStyle()函数调用getFont()函数
设置个别单元格字体样式和大小时,样式为:getStyle()->getFont() -> setSize(20) -> setBold(true);getStyle()函数中为设置范围,setBold函数设置是否加粗
$objSheet -> getDefaultStyle() -> getFont() -> setName("微软雅黑") -> setSize("14");//设置默认字体为微软雅黑,大小为14 $objSheet -> getStyle("A2:Z2") -> getFont() -> setSize(20) -> setBold(true);//设置年级所在行的字体大小为20,加粗 $objSheet -> getStyle("A3:Z3") -> getFont() -> setSize(16) -> setBold(true);//设置班级所在行的字体大小为16,加粗
3、合并单元格
使用mergeCells()函数,参数为单元格范围:单元格1位置:单元格2位置
$objSheet -> mergeCells($nameIndex."3:".$scoreIndex."3");//合并每个班级的单元格
4、填充背景颜色
getStyle(单元格范围)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(rgb颜色编码');
$objSheet->getStyle($nameIndex."3:".$scoreIndex."3")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB('52e351');//填充班级所在列的背景颜色
5、设置自动换行
在setCellValue()函数前面加上 getStyle($nameIndex) -> getAlignment()->setWrapText(true);激活自动换行样式
然后在setCellValue()赋值函数中在想要换行的地方加上“\n”
$objSheet -> getStyle($nameIndex) -> getAlignment()->setWrapText(true);//设置列自动换行 $objSheet -> setCellValue($nameIndex."4","姓名\n换行") -> setCellValue($scoreIndex."4","分数");
6、设置边框的样式
定义一个函数 getBorderStyle来获取有关的边框样式
调用getStyle(单元格范围) -> applyFromArray($gradeBorderStyle);$gradeBorderStyle就是函数 getBorderStyle返回的包含边框样式的数组
/** * 获取不同边框的格式 * */ function getBorderStyle($color){ $styleArray = array( 'borders' => array( 'outline' => array( 'style' => PHPExcel_Style_Border::BORDER_THICK, 'color' => array('rgb' => $color), ), ), ); return $styleArray; }
$gradeBorderStyle = getBorderStyle("e3df51");//获取年级所在行的边框样式 $objSheet -> getStyle($gradeIndex."2:".$endGradeIndex."2") -> applyFromArray($gradeBorderStyle);//设置年级列边框
7、将单元格格式设置为文本格式
将单元格赋值函数setCellValue换成setCellValueExplicit函数并加入第三个函数参数"PHPExcel_Cell_DataType::TYPE_STRING"
应用于单元格内容为超过11位的数字时
//将单元格格式设置为文本格式的事例 $objSheet -> setCellValue($nameIndex.$j,$val['username']) -> setCellValueExplicit($scoreIndex.$j,$val['score']."1561540661", PHPExcel_Cell_DataType::TYPE_STRING); */