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

PhpSpreadsheet: изображения добавляются в эксель, но не показываются в нем — что не так?

Генерирую .xlsx на скачивание с помощью PhpSpreadsheet
Проблема с изображениями. Они добавляются в эксель (сужу по значительно увеличивающемуся весу файла), но в самом экселе не показываются.
Кто-то что-то может подсказать?
Код добавления изображения в эксель ниже по тексту. Полный код, касающийся PhpSpreadsheet, будет добавлен при необходимости. Жаль, что здесь нельзя аттачить файлы.
$arLetters = range("A","Z"); // заранее неизвестно количество столбцов таблицы

$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); 
$Excel_writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);

$spreadsheet->setActiveSheetIndex(0);
$activeSheet = $spreadsheet->getActiveSheet();

foreach($fields_names as  $key => $fields_name):  // это первая строка, заголовки
$activeSheet->setCellValue( $arLetters[$key] .  '1' , $fields_name);  //  это первая строка, заголовки
endforeach; //  это первая строка, заголовки

$keyRow = 1;

// картинки добавляются в первый столбец таблицы - А2, А3, А4 и т.д.
foreach ($arResult as $ORDER)
{
                $keyRow +=1;
                if($ORDER['photo_small']):
                              $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
                              $drawing->setName('Image'  . $keyRow);
                              $drawing->setDescription('Image');
                              $drawing->setHeight(80);
                              $drawing->setCoordinates( 'A' .  $keyRow);
                              $drawing->setPath($ORDER['photo_small']);
                              $drawing->setWorksheet($activeSheet);

                endif;

// код заполнения остальных ячеек

}
  • Вопрос задан
  • 1693 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@sagechild
программист php
Если смотреть в доки, то ваш код им соответствует. Потому первое, что нужно проверить - это правильный путь до изображения. Второе посмотреть по логам, какие варнинги, нотики вылазят для этого скрипта, может они наведут на ошибку.
Ответ написан
Комментировать
@ghost_d0gg
У вас порядок в chain'е неверный. Сам промучился несколько часов.
Попробуйте так
$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing->setPath($ORDER['photo_small']);
$drawing->setName('Image'  . $keyRow);
$drawing->setDescription('Image');
$drawing->setHeight(80);
$drawing->setCoordinates( 'A' .  $keyRow);
$drawing->setWorksheet($activeSheet);
Ответ написан
Ваш ответ на вопрос

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

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