ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

phpexcel 网页可能暂时无法连接,或者它已永久性地移动到了新网址 ERR_INVALID_RESPONSE

2021-10-18 14:33:15  阅读:484  来源: 互联网

标签:新网址 ERR excel INVALID filename Content header 报错 Type


最近使用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");
// 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,所以导致了上述问题。最终排查结果与猜想一致,解决问题。

 

出现“网页可能暂时无法连接,或者它已永久性地移动到了新网址”这个问题的原因可能有很多,但根据实际情况抽丝剥茧,比一直在网上尝试各种解决方法去掩盖这个问题要好太多了,继续加油吧!

 

标签:新网址,ERR,excel,INVALID,filename,Content,header,报错,Type
来源: https://www.cnblogs.com/mianbaoshu/p/15420466.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有