php excel drawing 报错
Division by zero in Classes\PHPExcel\Worksheet\BaseDrawing.php
这个错误 让我搞了两个多小时,总算解决,再用半小时写下处理过程吧
最终原因:是版本太老,没有考虑初始时 width 和 height 都没有初值时,却设置了按比例调整
升级 了版本到1.8 ,但还是不太好{
https://github.com/PHPOffice/PHPExcel 这是新版本,也是最后一版了吧
界面 上写着 :DEPRECATED 意思我理解是不再升级 了,看来互联网上不能只写excel 格式,
又出了新一代表格,这个不多说,先解决了问题再说
}
错误源代码 :PHPExcel\Worksheet\BaseDrawing.php
共有三处错误 函数:
1. public function setWidthAndHeight($width = 0, $height = 0)
2. public function setWidth($pValue = 0)
3. public function setHeight($pValue = 0)
新版本中,其中一个举例如下:
public function setHeight($pValue = 0)
{
// Resize proportional?
if ($this->resizeProportional && $pValue != 0) {
$ratio = $this->width / ($this->height != 0 ? $this->height : 1);
$this->width = round($ratio * $pValue);
}
// Set height
$this->height = $pValue;
return $this;
}
蓝色代码是新版本里修改的地方。
只是他仍然没有办法解决初始赋值的问题
下面一段是我用了获取图片尺寸函数来进行初始化的一段程序
$drawing = new PHPExcel_Worksheet_Drawing();
$drawing->setName(“$value”);
$drawing->setDescription(“$value”);
$imgName = “./avatar/$value”;
$drawing->setPath($imgName);
list ($Oldrwidth, $Oldheight) = getimagesize($imgName);//获得原图尺寸
$drawing->setWidthAndHeight($Oldrwidth, $Oldheight);//给出大小
$drawing->setHeight(45);//这里再给出你想要的图片高度就可以实现自动调整比例了OK!
$drawing->setCoordinates(‘D’ . ($key + 1));
$drawing->setOffsetX(2);
$drawing->setOffsetY(2);
$drawing->setWorksheet($currentSheet);
希望对遇到同样问题的朋友有帮助!!