然之封装PHPExcel模块Bug
2017-07-24 16:41:14
杨桢
  • 访问次数: 59
  • 注册日期: 2017-06-29
  • 最后登录: 2017-11-09
  • 我的积分: 2580
  • 门派等级: 释迦 等级3 比丘

然之通过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。如图

100 杨桢 最后编辑, 2017-07-24 16:44:47
沙发
2017-07-24 16:51:11
刘刚
  • 访问次数: 995
  • 注册日期: 2015-12-02
  • 最后登录: 2024-09-09
  • 我的积分: 25246
  • 门派等级: 玄清 等级4 地仙

谢谢反馈!

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

板凳
2017-07-24 17:27:44
王春生
  • 访问次数: 938
  • 注册日期: 2014-05-02
  • 最后登录: 2023-09-12
  • 我的积分: 1310
  • 门派等级: 无门派
奖励100积分。:)
1/1