@ImPuuLsE

Как вставить изображение в Excel используя библиотеку phpexcel?

Здравствуйте! использую https://packagist.org/packages/phpoffice/phpexcel
$model = Product::find()->published()->all();
        $objPHPExcel = new \PHPExcel();
        // Add some data
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'Фото')
            ->setCellValue('B1', 'Название')
            ->setCellValue('C1', 'Опт 1')
            ->setCellValue('D1', 'Опт 2')
            ->setCellValue('E1', 'Опт 3')
            ->setCellValue('F1', 'Опт 4')
            ->setCellValue('G1', 'Артикул');
        $i = 1;
        foreach($model as $product){
            $i++;
                $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('B'.$i.'', $product->title)
                ->setCellValue('C'.$i.'', $product->opt_price1)
                ->setCellValue('D'.$i.'', $product->opt_price2)
                ->setCellValue('E'.$i.'', $product->opt_price3)
                ->setCellValue('F'.$i.'', $product->price)
                ->setCellValue('G'.$i.'', $product->id);

                if (file_exists(Yii::getAlias('@webroot') . $product->images[0]->getUrl())) {
                        // Add a drawing to the worksheetecho date('H:i:s') . " Add a drawing to the worksheet\n";
                        $objDrawing = new \PHPExcel_Worksheet_Drawing();
                        $objDrawing->setName('Sample image');
                        $objDrawing->setDescription('Sample image');
                        $objDrawing->setPath(Yii::getAlias('@webroot').$product->images[0]->getUrl());
                        $objDrawing->setHeight(120);
                        $objDrawing->setCoordinates('A'.$i.'');
                        $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
                }
        }
        // Rename worksheet
        $objPHPExcel->getActiveSheet()->setTitle('Цены на все товары');


        // Set active sheet index to the first sheet, so Excel opens this as the first sheet
        $objPHPExcel->setActiveSheetIndex(0);

        // Redirect output to a client’s web browser (Excel5)
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="pricelist.xls"');
        header('Cache-Control: max-age=0');
        // If you're serving to IE 9, then the following may be needed
        header('Cache-Control: max-age=1');

        // If you're serving to IE over SSL, then the following may be needed
        header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
        header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header ('Pragma: public'); // HTTP/1.0

        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;

Но картинка не вставляется... Что я делаю не так?
Если вот тут указать неправильный путь
$objDrawing->setPath(Yii::getAlias('@webroot').$product->images[0]->getUrl());

то он ругается, у меня же проходит все гладко, поэтому я делаю вывод что дальше что то не так идет...
  • Вопрос задан
  • 3357 просмотров
Пригласить эксперта
Ответы на вопрос 1
alexyarik
@alexyarik
Битрикс разработчик
Пример из битрикса:
$sPicPath = $arElement["PREVIEW_PICTURE"]["SRC"];
$objDrawing->setPath($_SERVER["DOCUMENT_ROOT"].$sPicPath);
проблема в путях, если включить логирование ошибок вам бы показало ошибку, что по указанному пути файл не существует или что в этом роде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы