dima9595
@dima9595
Junior PHP

Не вставляется изображение через PhpSpreadsheet, как исправить?

Работаю на Laravel и генерирую таблицу (Excel) через PHP. Генерация текста работает отлично, но вот почему-то изображение не отображается в таблице. При этом размер файла изменяется (добавляется размер файла изображения).

Код вставки изображения:
$imagePath = storage_path('app/' . $this->organization->inn . '/deverennost_stamp.png');   // Это изображение точно есть

if (file_exists($imagePath)) {
    for ($i = $this->row; $i < ($this->row + 10); $i++) {
        $sheet->setCellValue('A' . $i, ' ');   // Очищаем лишние ячейки
    }

    $sheet->mergeCells('A' . $this->row . ':AA' . $this->row);   // Объединяем ячейку куда будет вставляться изображение

    $img = new Drawing();
    $img->setPath($imagePath);
    $img->setCoordinates('A' . ($this->row - 9));   // Вот сюда мы вставляем наше изображение
    $img->setOffsetX(0);
    $img->setOffsetY(0);
    $img->setWorksheet($sheet);
}


Сам Excel файл файл сохраняется вот так:
protected function generatePdf($Excel = null) {
    // ...

    // Сначала сохраняем таблицу в файл Excel'я
    $Excel = IOFactory::createWriter($Excel, 'Xlsx');
    $Excel->save(storage_path('app') . "/temp/$this->fileName.xlsx");

    // ...
}


А если я сразу сохраняю и отдаю в PDF формате, то изображение отображается. Но мне так не нужно.
protected function outputPdf($Excel) {
    $this->savePdf($Excel);

    if ($this->returnFile) {
        return $this->fileName;
    }

    $file = Storage::disk('local')->get("temp/$this->fileName.pdf");
    $response = Response::make($file, 200);
    $response->header("Content-Type", "application/pdf");
    return $response;
}


Уже какой день не могу понять причину не сохранения изображения. Пожалуйста помогите.
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Aricus
Я в своё время так и не смог разобраться с этой же ошибкой. Перешёл на PhpExcel. Хоть фреймворк и более старый, и не поддерживается, но почему-то там всё отлично работает.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы