【问题标题】:phpExcel : Failed to load resource: net::ERR_CONNECTION_RESETphpExcel:加载资源失败:net::ERR_CONNECTION_RESET
【发布时间】:2015-02-26 09:18:04
【问题描述】:

我实际上使用 phpExcel 来获取我使用 <input type='file'> 从用户那里恢复的 excel 文件,然后我将此 excel 文件转换为 csv 文件。

我的脚本工作并生成了 csv 文件。问题是在我的脚本完成后页面永远不会停止加载,我在控制台中收到此错误:Failed to load resource: net::ERR_CONNECTION_RESET

他们是另一个问题,我还在脚本中使用了另一个对象来显示菜单,而菜单不显示是我使用 PHPExcel。

它们是我调用 PHPExcel 对象创建的代码:

<?php
///Get excelFile ///        
if(isset($_FILES['excelFileCandidat']))
{
   require_once dirname(__FILE__) . "/../../lib/ExcelCandidat/ExcelCandidat.class.php";
   $file = new ExcelCandidat($_FILES['excelFileCandidat']);
   $file->excelFileToCsv();
}



echo "<table width='100%'>";
echo     "<tr>";
echo        "<td>";
echo           "Import new Excel File : ";
echo           "<input type='file' name='excelFileCandidat' />";
echo        "</td>";
echo        "<td>";
echo           "<input type='submit' name='submit' value='Send' />";
echo        "</td>";
echo     "</tr>";
echo "</table>";
?>

还有我的对象:

<?php
require_once dirname(__FILE__) . "/../PHPExcel/PHPExcel.php";

class ExcelCandidat
{
    private $excelFile;
    public function __construct($file)
    {
        $this->excelFile = $file;
    }

    public function excelFileToCsv()
    {
        set_time_limit(600);
        if (!is_array($this->excelFile))
        {
             throw new Exception("STR_APPROCHECK_ERR");
        }

        $newFilename = 'csvCandidat';
        $ext = strrchr($this->excelFile['name'], '.');
        $isExcel = stripos($ext, '.xls') !== false;
        if($isExcel) 
        {
            ini_set('memory_limit', '256M');
            $objPHPExcel = PHPExcel_IOFactory::load($this->excelFile['tmp_name']);
            $worksheet = $objPHPExcel->getActiveSheet();
            $writer = PHPExcel_IOFactory::createWriter($objPHPExcel , 'CSV');
            $writer->setDelimiter(';');
            $writer->setEnclosure('"');
            $writer->setUseBOM(false);
            $tmpName = dirname(__FILE__) . '/file/' . $newFilename . date('ymdHis') .'.csv';
            $writer->save($tmpName);
            unset($objPHPExcel, $writer);
        }
    }
}
?>

【问题讨论】:

  • 问题出在 $objPHPExcel = PHPExcel_IOFactory::load($this->excelFile['tmp_name']);因为当我评论除此行之外的所有内容时,问题仍然存在
  • 奇怪的是脚本进入另一个对象并传递所有内容,但我的回显不起作用。我迷路了。
  • 我只是在另一台计算机上尝试,问题消失了,所以我认为这是一个配置问题,我实际上使用 wamp 2.2 和 php 5.2.7。但我还是有问题。

标签: php phpexcel


【解决方案1】:

我发现问题来自文件 PHPExcel/Calculation.php 中的库。

您必须在 PHPExcel_Calculation 类的开头添加一行,添加一行 private $saveThis;,并在构造函数(第 1722 行)中添加一个 line $this-&gt;saveThis = $this;,并在破坏函数(第 1740 行)中将 $this 替换为$saveThis

【讨论】:

  • 你不想改变 phpexcel 库。
  • 喜欢它纠正我的问题是的,这就是我会做的。
  • 显然你可以,但如果你决定更新 PHPExcel,它可能不再工作了。或者您可能会发现使用库的其他部分不再有效
  • 没关系,如果你看看我纠正的,他们不可能在开发的其他部分发生,因为这只是我有时解决的 php 对象的问题 $this 不要采取好对象我不记得为什么但我知道它是附加的,所以我只是将 $this 保存在对象的构造中并在 destruct 函数中使用它。
猜你喜欢
  • 1970-01-01
  • 2017-05-19
  • 2023-01-28
  • 2014-06-24
  • 2018-10-10
  • 2014-07-06
  • 2015-08-17
  • 2014-07-04
  • 1970-01-01
相关资源
最近更新 更多