然之通过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。如图
谢谢反馈!
然之对phpexcel的封装仅限于我们使用到的功能,有很多未使用的功能都未进行封装。实际中用到的时候都可以自行添加。