使用PHPExcel将xlsx转换为pdf并下载该pdf.工作良好的本地主机


Converting xlsx to pdf using PHPExcel and download that pdf . work Fine on localhost

此代码在本地主机上运行良好,但在实时服务器上显示

文件未找到

检查文件名是否有大写或其他键入错误。检查文件是否被移动、重命名或删除。

我的代码

excel.php

<?php
error_reporting(1);
ini_set('display_errors', 0);
ini_set('display_startup_errors', TRUE);
$target = 'Myfile.xlsx';
include 'phpexcel/Classes/PHPExcel/IOFactory.php';
$inputFileType = PHPExcel_IOFactory::identify($target);
function datefix_excel($excel) {
    $dif=(41885-$excel)*86400;
    $seconds=1409737670-$dif;
    $date=date("d/m/Y",$seconds);
    return $date; }
//echo 'File ',pathinfo($inputFileName,PATHINFO_BASENAME),' has been identified as an ',$inputFileType,' file<br />';
//echo 'Loading file ',pathinfo($inputFileName,PATHINFO_BASENAME),' using IOFactory with the identified reader type<br />';
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($target);
$i = 0;
$found = false;
try
{

    //
    foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) 
    {
    //
    //$objWorksheet = $objPHPExcel->getActiveSheet();
    //now do whatever you want with the active sheet
    $worksheet->setShowGridLines(false);
    $worksheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A2_PAPER );
    $worksheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A2_PAPER );
    $worksheet->getPageSetup()->setFitToPage(true);
    $worksheet->getPageSetup()->setFitToWidth(1);
    $worksheet->getPageSetup()->setFitToHeight(0);
    $worksheet->getPageSetup()->setScale(40);
    $worksheet->getStyle('F1:F4')->getAlignment()->setWrapText(false);
    $worksheet->getStyle('D6:D8')->getAlignment()->setWrapText(false);

    $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
    $count = 0;
    $found == false;
    //
$worksheetTitle     = $worksheet->getTitle();
$highestRow         = $worksheet->getHighestRow(); // e.g. 10
$highestColumn      = $worksheet->getHighestColumn(); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
for ($row = 1; $row <= $highestRow; ++ $row) {
    for ($col = 0; $col < $highestColumnIndex; ++ $col) {
        $cell = $worksheet->getCellByColumnAndRow($col, $row);
        $val = $cell->getValue();
            if($val==$_REQUEST['roll'])
            {
                //echo "Roll Number found: ".$_REQUEST['roll']." <br/>";
                $found = true;
               // $objPHPExcel->getActiveSheet()->setCellValue('C23',$val);
               $objPHPExcel->getActiveSheet()->setCellValue('C23',datefix_excel($objPHPExcel->getActiveSheet()->getCell('C23')->getValue()));
                $rendererName = PHPExcel_Settings::PDF_RENDERER_DOMPDF;
                $rendererLibrary = 'dompdf';
                $rendererLibraryPath = './' . $rendererLibrary;
                //require_once (realpath(dirname(dirname(dirname(__FILE__))))."/libraries/pdf.php");
                //echo $rendererName.' and '.$rendererLibraryPath;
                if (!PHPExcel_Settings::setPdfRenderer($rendererName,$rendererLibraryPath)) {
                    die('NOTICE: Please set the $rendererName and $rendererLibraryPath values' .EOL .'at the top of this script as appropriate for your directory structure');
                }
                header("HTTP/1.1 200 OK");
                header("Pragma: public");
                header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                header("Cache-Control: private", false);
                header('Content-Type: application/pdf');
                header('Content-Disposition: attachment;filename="rename.pdf"'); //tell browser what's the file name
                header('Cache-Control: max-age=0'); //no cache
                $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
                $objWriter->setSheetIndex($i);
                //$objWriter->save('test.pdf');
                $objWriter->save('php://output');
                break;

            }
            else{
                continue;
            }

            }
        }
    //
}   
}
catch(Exception $e)
{
    //echo $e;
}

?>

我会检查:1)当前文件夹可写吗?2) pdf.php被注释掉了,试着启用它(为什么?本地机器可能安装了PDF,服务器没有),3)尝试保存到文件而不是输出到浏览器,这将绕过任何浏览器/安全问题。