我有一个 xlsx,有两张表:一张在 G1:O25 中有一些数据(我们称之为“数据”),一张在 G1:O25 的单元格中插入了一些图像(我们称之为“图像”)。
我的目标是使用 Python 通过图像过滤数据。我想要一个弹出窗口,显示单元格 G1 中的图像以及一个复选框或包含/排除此数据点的内容。然后使用包含的数据点创建一个新工作表(“过滤数据”)。
我是 Python 新手,所以请耐心等待,但我通过搜索发现了一些事情:
- 我可以将数据加载到列表中。
- xlsx 文件实际上是 zip 文件,因此我可以使用 zipfile 和 matplotlib 从子目录中读取图像并显示它们。
- 添加复选框并进行过滤应该不难。
我遇到的问题:
- 由于 openpyxl 在读取/写入工作簿时不会保留图像,因此当我附加“过滤数据”表时,我会丢失图像。也许有一种解决方法,例如保存到单独的工作表并使用 COM?
- 尽管我可以使用 zip 方法加载图像,但我丢失了它们与哪个单元格关联的信息。它们在 xlsx/zip 文件内按逻辑顺序排列,但有时会丢失图像(即单元格 K11 没有图像),所以我不能假设 image1.jpeg 对应于单元格 G1 等等向前)。我不确定在 Excel 文件中的哪个位置可以找到将图像与电子表格中各自的单元格关联的信息。
先感谢您
As per 如何获取工作表中形状的相对位置,在 Excel 对象模型中,您可以通过其获取与图像相邻的单元格.TopLeftCell
财产:
![test pictures](https://i.stack.imgur.com/xjbGE.png)
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
prints:
$B$2
$B$5
$D$3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)