#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')