@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" обнаружено содержимое, которое не удалось прочитать. Попробовать восстановить содержимое книги? Если вы доверяете источнику этой книги, нажмите кнопку "Да".

После нажатия на кнопку "Да" он не находит ничего лучше, как удалить картинку:
Была выполнена проверка на уровне файла с последующим восстановлением файла. Некоторые фрагменты документа могли быть восстановлены либо удалены.
Удаленный компонент: Параметры печати.
Удаленный компонент: Рисованная фигура.
  • Вопрос задан
  • 644 просмотра
Решения вопроса 1
@Aricus Автор вопроса
Если кому интересно, в этом "новом, улучшенном" плагине сделать добавление изображений не получилось. А вот "устаревший" PhpExcel c этой задачей отлично справляется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
cesnokov
@cesnokov
<head>&nbsp;</head>
Возможно вы используете слэши не в ту сторону если в Windows'ах работаете:
..\img\barcode.gif
Ответ написан
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); // Ширина в пикселях
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
ВЕРТЕКС Санкт-Петербург
от 90 000 ₽
Laptop.ru Москва
от 150 000 до 190 000 ₽
Кнопка Екатеринбург
от 80 000 ₽
02 авг. 2021, в 17:17
6000 руб./за проект
02 авг. 2021, в 17:03
5000 руб./за проект
02 авг. 2021, в 16:36
5000 руб./за проект