Есть ли модуль Python, который можно использовать для вставки анимированных GIF-файлов в Excel

#python #excel #gif #xlsxwriter

Вопрос:

В MSO Microsoft Excel 2016 (16.0.13929.20206) можно вставлять анимированные GIF-файлы. После вставки они воспроизводятся даже после сохранения и закрытия файла. Процесс вставки GIF-файлов в Excel довольно прост: активируйте вкладку Вставка, выберите опцию Изображения, перейдите к файлу и выберите Вставить.

Хотя вручную вставить файлы в книгу Excel довольно просто, я мог бы извлечь большую пользу из скрипта Python, который автоматизирует этот процесс. Я пытался сделать это с помощью xlsxwriter этого insert_image метода, но безрезультатно. Вот краткий пример кода, за которым следует ошибка, которая возникает:

 import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet()
worksheet.insert_image('B2', '001.gif')
workbook.close()

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/Software/python/3.7/lib/python3.7/site-packages/xlsxwriter/workbook.py", line 304, in close
    self._store_workbook()
  File "/opt/Software/python/3.7/lib/python3.7/site-packages/xlsxwriter/workbook.py", line 634, in _store_workbook
    self._prepare_drawings()
  File "/opt/Software/python/3.7/lib/python3.7/site-packages/xlsxwriter/workbook.py", line 1084, in _prepare_drawings
    self._get_image_properties(filename, image_data)
  File "/opt/Software/python/3.7/lib/python3.7/site-packages/xlsxwriter/workbook.py", line 1192, in _get_image_properties
    "%s: Unknown or unsupported image file format." % filename)
xlsxwriter.exceptions.UnsupportedImageFormat: 001.gif: Unknown or unsupported image file format.
 

Очевидно, что этот insert_image метод не поддерживает файлы GIF.

Я просмотрел форумы, но не могу найти никаких других модулей или методов, которые позволили бы мне выполнить эту простую задачу на Python.

Спасибо за ваш вклад!

Комментарии:

1. Я являюсь автором XlsxWriter. Причина, по которой GIF-файлы не поддерживаются, заключается в том, что анимированные GIF-файлы не поддерживались Excel, и никто не проявлял особого интереса к не анимированным файлам. Если Excel теперь поддерживает анимированные GIF-файлы, я готов добавить поддержку GIF-файлов в XlsxWriter. Вы можете открыть запрос на функцию на Github. В то же время я считаю, что OpenPyXL поддерживает GIF в качестве формата изображения.

2. Спасибо, @jmcnamara. OpenPyXL, похоже, делает свое дело.

3. Я добавил поддержку GIF-изображений (и, соответственно, анимированных GIF-файлов) в XlsxWriter версии 1.4.2. Можете ли вы попробовать это в приведенном выше примере, и если это работает должным образом (должно работать), обновите один из ваших постов, чтобы указать, что он работает с версией >= 1.4.2. Спасибо.

Ответ №1:

@jmcnamara предложил использовать модуль OpenPyXL. Следующий код Python выполнит необходимую задачу:

 import openpyxl
from openpyxl.drawing.image import Image

#Define the Excel workbook and sheet.
wb = openpyxl.Workbook()
ws = wb.worksheets[0]

#Locate the GIF.
img = Image('000.gif')

#Add the GIF to the worksheet.
ws.add_image(img)

#Save the workbook.
wb.save('out.xlsx')