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);

希望对遇到同样问题的朋友有帮助!!

转载于:https://www.cnblogs.com/dnnsoft/p/8452790.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值