【问题标题】:Is there a Python module that can be used to insert animated GIF files into Excel是否有可用于将动画 GIF 文件插入 Excel 的 Python 模块
【发布时间】:2021-07-26 21:46:47
【问题描述】:

在 Microsoft Excel 2016 MSO (16.0.13929.20206) 中,可以插入动画 GIF 文件。插入后,它们可以播放,即使在保存和关闭文件后也是如此。在 Excel 中插入 GIF 的过程相当简单:激活“插入”选项卡,选择“图片”选项,浏览到文件并选择“插入”。

虽然手动将文件插入 Excel 工作簿相当简单,但我可以从自动化该过程的 Python 脚本中受益匪浅。我尝试使用xlsxwriterinsert_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 中执行这个简单的任务。

感谢您的意见!

【问题讨论】:

  • 我是 XlsxWriter 的作者。不支持 GIF 文件的原因是 Excel 不支持动画 GIF,而且没有人对非动画类型有太大兴趣。如果 Excel 现在支持动画 gif,那么我愿意为 XlsxWriter 添加对 GIF 的支持。您可以在 Github 上打开功能请求。同时我相信 OpenPyXL 支持 GIF 作为图像格式。
  • 谢谢你,@jmcnamara。 OpenPyXL 似乎可以解决问题。
  • 我在 XlsxWriter 版本 1.4.2 中添加了对 GIF 图像(以及扩展的动画 GIF)的支持。您可以尝试使用上面的示例,如果它按预期工作(它应该)然后更新您的一篇文章以表明它适用于版本> = 1.4.2。谢谢。

标签: python excel gif xlsxwriter


【解决方案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')

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2013-12-27
    • 2021-05-26
    相关资源
    最近更新 更多