简体   繁体   English

使用PHPExcel将xlsx转换为pdf并下载该pdf。 在本地主机上工作正常

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

This code works fine on localhost but on live server it shows 这段代码在localhost上工作正常,但在实时服务器上显示

File Not Found 文件未找到

Check the file name for capitalization or other typing errors. 检查文件名是否大写或其他键入错误。 Check to see if the file was moved, renamed or deleted. 检查文件是否已移动,重命名或删除。

Here is my code 这是我的代码

excel.php 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;
}


?>

I would check: 1) is current folder writeable? 我将检查:1)当前文件夹是否可写? 2) pdf.php is commented out, try enabling it (why? local machine probably has PDF installed, server does not), 3) try saving to file instead of outputting to browser, this will bypass any browser / security issues. 2)注释了pdf.php,尝试启用它(为什么?本地计算机可能已安装PDF,服务器未安装),3)尝试保存到文件而不是输出到浏览器,这将绕过任何浏览器/安全问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM