Получить путь к ресурсу изображения из Excel5 (XLS) с помощью PHPExcel - PullRequest
0 голосов
/ 25 марта 2020

Я преобразовал файл XLSX в pdf без проблем. Но когда я попытался преобразовать файл XLS в pdf, изображение не отображается. Я следовал за кодом и нашел проблему. Проблема в том, что путь к ресурсу изображения - это ID ресурса № 81. Я не знаю, как получить путь от идентификатора ресурса. Может кто-нибудь сказать, как получить путь к ресурсу или есть какой-либо другой способ конвертировать файл xls в pdf. Заранее спасибо.

public static function convertExceltoPdf($path,$newid,$doc,$lastName,$firstname) {
        $rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF;
        $rendererLibraryPath = dirname(dirname(__FILE__)).'/Classes/tcpdf';
        $objPHPExcel = new PHPExcel();
        $inputFile = $path ."/". $doc;
        $inputFileType = PHPExcel_IOFactory::identify($inputFile);
        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
        $objPHPExcel = $objReader->load($inputFile);
        $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(25);
        $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(30);
        $maxCell = $objPHPExcel->getActiveSheet()->getHighestRowAndColumn();
        $data = $objPHPExcel->getActiveSheet()->rangeToArray('A1:' . $maxCell['column'] . $maxCell['row']);
        $data = array_map('array_filter', $data);
        $data = array_filter($data);
        $rows = count($data);
        $columns = "L";
        $objPHPExcel->getProperties()->setTitle("");
        $objPHPExcel->getActiveSheet()->getStyle('B1:B'.$rows)->getFill()->getStartColor()->setARGB(FFCCFFFF);
        $objPHPExcel->getActiveSheet()->getStyle('F2')->getFill()->getStartColor()->setARGB(FFCCFFFF);
        $objPHPExcel->getActiveSheet()->getStyle('I2')->getFill()->getStartColor()->setARGB(FFCCFFFF);
        $objPHPExcel->getActiveSheet()->getStyle('I3')->getFill()->getStartColor()->setARGB(FFCCFFFF);
        $objPHPExcel->getActiveSheet()->getStyle('I4')->getFill()->getStartColor()->setARGB(FFCCFFFF);
        $valueOS10 = $objPHPExcel->getActiveSheet()->getCell("D10")->getValue();
        $valueOS11 = $objPHPExcel->getActiveSheet()->getCell("D11")->getValue();
        if ($valueOS10 == "Operating System") {
            $objPHPExcel->getActiveSheet()->getStyle('C17')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('C19')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('C20')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            for ($i = 10; $i < 21; $i++) { 
                $objPHPExcel->getActiveSheet()->getStyle('D1:D'.$i)->getFill()->getStartColor()->setARGB(FFCCFFFF);
            }
            $objPHPExcel->getActiveSheet()->getStyle('E19')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('H19')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('I19')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('J19')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('K19')->getFill()->getStartColor()->setARGB(FFCCFFFF);
        } elseif($valueOS11 == "Operating System") {
            $objPHPExcel->getActiveSheet()->getStyle('C18')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('C20')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('C21')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            for ($i = 11; $i < 22; $i++) { 
                $objPHPExcel->getActiveSheet()->getStyle('D1:D'.$i)->getFill()->getStartColor()->setARGB(FFCCFFFF);
            }
            $objPHPExcel->getActiveSheet()->getStyle('E20')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('H20')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('I20')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('J20')->getFill()->getStartColor()->setARGB(FFCCFFFF);
            $objPHPExcel->getActiveSheet()->getStyle('K20')->getFill()->getStartColor()->setARGB(FFCCFFFF);
        }
        foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
            $worksheet->setShowGridLines(true);
            $worksheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_DEFAULT);
            $worksheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A3_EXTRA_TRANSVERSE_PAPER );
        }
        $objPHPExcel->setActiveSheetIndex(0);
        if (!PHPExcel_Settings::setPdfRenderer(
            $rendererName,
            $rendererLibraryPath)) {
            die(
            'NOTICE: Please set the $rendererName and $rendererLibraryPath values' .
            '<br />' .
            'at the top of this script as appropriate for your directory structure'
            );
        }
        $path = $path . "/temp";
        if(!file_exists($path)){
            mkdir($path, 0777, true);
            chmod($path,0777);
        }
        $filePath = $path . "/" . $newid."_".$lastName.".".$firstname. ".pdf";
        $fileName = $newid . ".pdf";
        ini_set ('max_execution_time', '60'); 
        ini_set ('memory_limit', '100M'); 
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
        $objWriter->save($filePath,$columns,$rows);
        return ;
    }
}
...