phpexcel损坏的文件导出到浏览器:我们发现某些内容存在问题

时间:2019-03-07 08:19:04

标签: php phpexcel

我在打开导出的excel文件时遇到问题。

我之前遇到过同样的问题,我必须先将其存储到某个路径,然后读取文件并将其写入输出缓冲区。

在我的本地计算机上没有任何问题。

但是服务器中发生了相同的问题。

这是我之前所做的:

    // Save Excel 2007 file
    $lsFileName = isset($file_name) && $file_name != null ? $file_name.'.xlsx' : 'Report.xlsx';
    $upload_dir = "upload/export_dump/";

    if(is_dir($upload_dir) == false) {
        mkdir($upload_dir, 0777);
    }

    $lsSavePath = $upload_dir.$lsFileName;

    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->setIncludeCharts(TRUE);
    $objWriter->save($lsSavePath);

    $lnFilesize = filesize($lsSavePath);

    // Redirect output to a client’s web browser (Excel2007)
    header('Content-Type: application/force-download');
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header("Content-Disposition: attachment; filename=" . utf8_decode($lsFileName));
    header('Content-Transfer-Encoding: binary');
    header('Accept-Ranges: bytes');
    header('Cache-Control: max-age=0');
    header("Content-Length:" . $lnFilesize);
    readfile($lsSavePath);

编辑:我尝试检查是否在读取文件之前进行了任何输出。

    .
    .
    header("Content-Length:" . $lnFilesize);
    $output = ob_get_contents();
    if(!empty($output)) {
        var_dump($output);
        die('Something was definitely printed!');
    } else {
        readfile($lsSavePath);    
    }

但是文件被下载,并且弹出相同的修复消息。

注意:从服务器本身下载文件(不是通过浏览器)并打开文件时,就没有问题。

0 个答案:

没有答案