phpexcel⽹页可能暂时⽆法连接,或者它已永久性地移动到了
新⽹址ERR_INVALID。。。
最近使⽤phpexcel导出⽂件时,遇到了⽹页可能暂时⽆法连接,或者它已永久性地移动到了新⽹址的问题,困扰我了好久。在⽹上了好多种解决⽅法,除了将excel版本由excel2007降低到excel5 有点⽤外,其他的都尝试⽆果。但是,将excel版本由excel2007降低到excel5⼜引起了其他问题,⽐如,导出报告中的批注不能⽣效,复制导出excel中的内容到另⼀个excel,颜⾊格式都发⽣变化等等。最终⽆可奈何,⾮要将这个问题从根本上解决才能消除⼤患。
思路如下:
1. 到根本原因
使⽤$objWriter->save($filename); $this->display(); 这种⽅式查看⽣成excel报错的具体现象
代码如下:
$filename="test.xlsx";
ob_end_clean();
ini_set('memory_limit','-1');
set_time_limit(0);
unlink($filename);
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($filename);
$this->display();
// header("Pragma: public");
// header("Expires: 0");
// header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
// header("Content-Type:application/force-download");
// header("Content-Type:application/vnd.ms-execl");
/
/ header("Content-Type:application/octet-stream");
getsavefilename// header("Content-Type:application/download");
// header('Content-Disposition:attachment;filename='.$filename);
// header("Content-Transfer-Encoding:binary");
// ob_end_clean();
// $objWriter->save( 'php://output');
// unlink($filename);
// exit;
修改后导报告的页⾯出现如下报错:
2. 查出错⽂件
由上图可知,报错的根本原因在Rels.php的第434⾏,到该⽂件的434⾏,如下所⽰:
到了报错点之后,再由⽩图中的错误信息可以看出是Rels.php 260⾏通过如下参数调⽤了_writeRelationship⽅法,但参数中第4个值$pTarget为NULL,所以引出了Invalid parameters passed.这个报错
继续追踪 Rels.php 260⾏,如下所⽰,在该处调⽤_writeRelationship⽅法时通过$hyperlink->getUrl()获取到了NULL,该⽅法与getHyperlink有关
3.反思
1)我在系统到报告出现上述现象的情况并不是持续的,⽽是有些出问题,有些⼜没有。
2)这个报错与getHyperlink有关,⽽我的excel会设置⽇志超链接
所以我猜测是设置超链接时,没有对⽇志url进⾏判断,可能某些时候的的url是NULL,所以导致了上述问题。最终排查结果与猜想⼀致,解决问题。
出现“⽹页可能暂时⽆法连接,或者它已永久性地移动到了新⽹址”这个问题的原因可能有很多,但根据实际情况抽丝剥茧,⽐⼀直在⽹上尝
试各种解决⽅法去掩盖这个问题要好太多了,继续加油吧!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论