Задать вопрос
@Aricus

PhpSpreadsheet: как добавить изображение (gif) в excel?

Мне нужно добавить в excel изображение с помощью PhpSpreadsheet. Согласно документации https://phpspreadsheet.readthedocs.io/en/latest/to... сформировал следующий код:
require_once(getenv('DOCUMENT_ROOT')."/".explode('/',$_SERVER["REQUEST_URI"])[1]."/test/vendor/autoload.php");
    $Reader = new PhpOffice\PhpSpreadsheet\Reader\Xlsx();
    $spreadsheet = $Reader->load('..\..\templates\somefile.xlsx');
    /* Тест: загрузка картинок */
    $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
    $drawing->setName('Logo');
    $drawing->setDescription('Logo');
    $drawing->setPath('../img/barcode.gif');
    $drawing->setHeight(36);
    $drawing->setCoordinates('B15');
    $drawing->setWorksheet($spreadsheet->getActiveSheet());
    /* Конец теста */
    $writer = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
    $writer->save('..\..\current\somefile.xlsx');

При скачивании и открытии получившегося файла всплывает ошибка excel (использую excel 2007):
В книге "somfile.xlsx" обнаружено содержимое, которое не удалось прочитать. Попробовать восстановить содержимое книги? Если вы доверяете источнику этой книги, нажмите кнопку "Да".

После нажатия на кнопку "Да" он не находит ничего лучше, как удалить картинку:
Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены.
Удаленный компонент: Параметры печати.
Удаленный компонент: Рисованная фигура.
  • Вопрос задан
  • 1195 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Aricus Автор вопроса
Если кому интересно, в этом "новом, улучшенном" плагине сделать добавление изображений не получилось. А вот "устаревший" PhpExcel c этой задачей отлично справляется.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
xakplant
@xakplant
Автор сайта xakplant.ru
Я написал статейку как раз про новую либу. В phpspreadsheets вставляется картинка так

TL;DR

$drawing = new Drawing(); // Новый экземпляр
$drawing->setName($name); // Имя картинки
$drawing->setDescription($name); // Описание
$drawing->setPath($img); // Абсолютный путь на сервере к картинке
$drawing->setCoordinates('A'. $i); // Координаты картинки
$drawing->getShadow()->setVisible(true); // Тень если нужно
$drawing->setWorksheet($sheet); // Нужная вкладка
$drawing->setHeight(100); // Высота в пикселях
$drawing->setWidth(100); // Ширина в пикселях
Ответ написан
Комментировать
cesnokov
@cesnokov
<head>&nbsp;</head>
Возможно вы используете слэши не в ту сторону если в Windows'ах работаете:
..\img\barcode.gif
Ответ написан
Ваш ответ на вопрос

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

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