风火家人开发记要

技术总结精华贴

Month: March 2019

PHP, 原创,

PHPOffice\PHPPresentation添加背景格式(图案填充)功能

使用PHPPresentation时我们发现,该开源软件竟然不支持图案填充功能,于是就自己补充了下,(本想将自己代码贡献给PHPOffice官方,因下载下来的开发版本无法通过单元测试,只能暂时写到此处供参考) 以下方式可以使PHPPresentation支持背景图案填充。 1.首先创建背景填充类文件 PHPOffice/PHPPresentation/src/PhpPresentation/Slide/Background/FillType.php 代码如下 <?php/** * Created by chenxue4076@163.com. * User: chenxue4076@163.com * Date: 2019/02/27 * Time: 14:46 * File name: FillType.php */namespace PhpOffice\PhpPresentation\Slide\Background;use PhpOffice\PhpPresentation\Slide\AbstractBackground;use PhpOffice\PhpPresentation\Style\Fill as StyleFill;class FillType extends AbstractBackground{ const FILL_PATTERN_BACKGROUND = array( “cross”, “dashDnDiag”, //dashed downward diagonal 下对角虚线 “dashHorz”, //dashed horizontal 横虚线 “dashUpDiag”, //dashed upward diagonal 上对角虚线 “dashVert”, //dashed vertical 竖虚线 “diagBrick”, //diagonal brick 对角砖型 “diagCross”, “divot”, //divot 草皮 “dkDnDiag”, //dark downward diagonal 深色下对角线 “dkHorz”, //dark horizontal 深色横线 “dkUpDiag”, //dark upward diagonal 深色上对角线 “dkVert”, //dark vertical 深色竖线 “dnDiag”, “dotDmnd”, //dotted diamond 点式菱形 “dotGrid”, //dotted grid 虚线网格 “horz”, “horzBrick”, //horizontal brick 横向砖型 “lgCheck”, //large checker board 大棋盘 “lgConfetti”, //large confetti 大纸屑 “lgGrid”, //large grid 大网格 “ltDnDiag”, //light downward diagonal 浅色下对角线 “ltHorz”, //light horizontal 浅色横线 “ltUpDiag”, //light upward diagonal 浅色上对角线 “ltVert”, //light vertical 浅色竖线 “narHorz”, //narrow horizontal 窄横线 “narVert”, //narrow vertical 窄竖线 “openDmnd”, //open diamond 轮廓式菱形? “pct5”, //5% “pct10”, //10% “pct20”, //20% “pct25”, //25% “pct30”, //30% “pct40”, //40% “pct50”, //50% “pct60”, //60% “pct70”, //70% “pct75”, //75% “pct80”, //80% “pct90”, //90% “plaid”, //plaid 苏格兰方格 “shingle”, //shingle卵石 瓦形 “smCheck”, //small checker board 小棋盘 “smConfetti”, //small confetti 小纸屑 “smGrid”, //small grid 小网格 “solidDmnd”, //solid diamond 实心菱形 “sphere”, //ball 球体 “trellis”, //trellises 棚架 “upDiag”, “vert”, “wave”, //wave 波浪 “wdDnDiag”, //wide downward diagonal

查看全文
PHP, 原创

phpExcel生成的Excel背景填充色变黑

最近有同事在处理PHPExcel生成的Excel文件时,总会生成一片黑背景。 具体样式我就不截图了, 直接说修改方式。 找到文件 PHPExcel/Writer/Excel2007/Stype.php, 找到函数方法 writePatternFill 将下面信息 $objWriter->writeAttribute(‘rgb’, $pFill->getStartColor()->getARGB()); 替换为 if( $pFill->getStartColor()->getARGB() == ‘FF000000’ && $pFill->getEndColor()->getARGB() == ‘FF000000’) { $objWriter->writeAttribute(‘rgb’, ’00FFFFFF’);} else { $objWriter->writeAttribute(‘rgb’, $pFill->getStartColor()->getARGB());} 原因解析:此函数中 startColor为前景色,endColor为背景色, 通过PHP生成的PHPExcel中会多出 前景色和背景色都为黑色FF000000的FILL, 这个应该是PHPExcel的BUG,这时候我们强制设置前景色(字体颜色)为透明的白色,因为都是空行,这样做并没有问题哦。 通过上面的操作我们就可以生成正常的Excel文件了。 (1081)

查看全文