然之封装PHPExcel模块Bug

derek 2017-07-24 16:41:14

然之通过lib\excel\excel.class.php封装了底层的PHPExcel开源插件,但在封装过程中存在一个漏洞,使得原始插件自带的setRowHeight()功能失效。

BUG文件定位:

lib\excel\excel.class.php    240行、354行

所在函数:setStyle()

由于程序默认使用setStyle()函数进行界面处理,因此在默认情况下即调用了此函数,且此函数中存在于export()主函数的最后一段。因此导致无论从哪里定义setRowHeight,都会被程序的固定值代替。


解决办法,在lib\excel\excel.class.php的363行下方加入如下代码(后方附截图)

       $customHeight = isset($this->rawExcelData->customHeight) ? array_keys($this->rawExcelData->customHeight) : array();
        for($row = 2; $row <= $i; $row++){
            if ($this->rawExcelData->customHeightAuto){
                $excelSheet->getRowDimension($row)->setRowHeight(-1);
            }else if(in_array($row, $customHeight)){
                $excelSheet->getRowDimension($row)->setRowHeight($this->rawExcelData->customHeight[$row]);
            }
        }


截图:

若想全部自适应高度,则可通过定义$data->customHeightAuto不为否实现,如图

也可以通过定义$data->customHeight来实现每行高度的单独控制,类似于$data->customWidth。如图

回帖列表
wwccss 2017-07-24 17:27:44
奖励100积分。:)
liugang 2017-07-24 16:51:11

谢谢反馈!


然之对phpexcel的封装仅限于我们使用到的功能,有很多未使用的功能都未进行封装。实际中用到的时候都可以自行添加。

1/ 1
鲁ICP备18054969号
ZSITE8.6