使用 Python 在 XLSX 中处理图像

Processing images in XLSX using Python

我有一个 xlsx,它有两个 sheets:在 G1:O25 中有一些数据(我们称之为 "data"),一个在 G1:O25 中的单元格中插入了一些图像=42=](我们称这个为"images")。

我的目标是 Python 使用图像过滤数据。我想要一个弹出窗口,显示单元格 G1 中的图像以及一个复选框或其他内容 include/exclude 此数据点。然后使用包含的数据点创建一个新的 sheet ("filtered data")。

我是 Python 的新手,请多多包涵,但我通过搜索发现了一些问题:

  1. 我可以将数据加载到列表中。
  2. xlsx 文件实际上是 zip 文件,因此我可以使用 zipfile 和 matplotlib 从子目录中读取图像并显示它们。
  3. 添加复选框和进行过滤应该不难。

我遇到的问题:

  1. 由于 openpyxl 在 reading/writing 到工作簿时不保留图像,所以当我附加 "filtered data" sheet 时我会丢失图像。也许有一种解决方法,比如保存到单独的 sheet 并使用 COM?
  2. 虽然我可以使用 zip 方法加载图像,但我丢失了有关它们与哪个单元格关联的信息。它们在 xlsx/zip 文件中按逻辑顺序排列,但有时会缺少图像(即单元格 K11 没有图像)所以我不能假设 image1.jpeg 对应于单元格 G1 和等等等等)。我不确定在 excel 文件中的哪个位置可以找到将图像与传播 sheet.
  3. 中的相应单元格相关联的信息

提前致谢

根据 how to get the relative position of shapes within a worksheet ,在 Excel 对象模型中,您可以通过 .TopLeftCell 属性:

获得与图像相邻的单元格

import win32com.client
x=win32com.client.Dispatch("Excel.Application")
wb=x.Workbooks.Open("<path_to.xlsx>")
ws=wb.Sheets("Sheet1")
for i in ws.Shapes:
    print i.TopLeftCell.Address

打印:

$B
$B
$D