使用 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 的新手,请多多包涵,但我通过搜索发现了一些问题:
- 我可以将数据加载到列表中。
- xlsx 文件实际上是 zip 文件,因此我可以使用 zipfile 和 matplotlib 从子目录中读取图像并显示它们。
- 添加复选框和进行过滤应该不难。
我遇到的问题:
- 由于 openpyxl 在 reading/writing 到工作簿时不保留图像,所以当我附加 "filtered data" sheet 时我会丢失图像。也许有一种解决方法,比如保存到单独的 sheet 并使用 COM?
- 虽然我可以使用 zip 方法加载图像,但我丢失了有关它们与哪个单元格关联的信息。它们在 xlsx/zip 文件中按逻辑顺序排列,但有时会缺少图像(即单元格 K11 没有图像)所以我不能假设 image1.jpeg 对应于单元格 G1 和等等等等)。我不确定在 excel 文件中的哪个位置可以找到将图像与传播 sheet.
中的相应单元格相关联的信息
提前致谢
根据 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
我有一个 xlsx,它有两个 sheets:在 G1:O25 中有一些数据(我们称之为 "data"),一个在 G1:O25 中的单元格中插入了一些图像=42=](我们称这个为"images")。
我的目标是 Python 使用图像过滤数据。我想要一个弹出窗口,显示单元格 G1 中的图像以及一个复选框或其他内容 include/exclude 此数据点。然后使用包含的数据点创建一个新的 sheet ("filtered data")。
我是 Python 的新手,请多多包涵,但我通过搜索发现了一些问题:
- 我可以将数据加载到列表中。
- xlsx 文件实际上是 zip 文件,因此我可以使用 zipfile 和 matplotlib 从子目录中读取图像并显示它们。
- 添加复选框和进行过滤应该不难。
我遇到的问题:
- 由于 openpyxl 在 reading/writing 到工作簿时不保留图像,所以当我附加 "filtered data" sheet 时我会丢失图像。也许有一种解决方法,比如保存到单独的 sheet 并使用 COM?
- 虽然我可以使用 zip 方法加载图像,但我丢失了有关它们与哪个单元格关联的信息。它们在 xlsx/zip 文件中按逻辑顺序排列,但有时会缺少图像(即单元格 K11 没有图像)所以我不能假设 image1.jpeg 对应于单元格 G1 和等等等等)。我不确定在 excel 文件中的哪个位置可以找到将图像与传播 sheet. 中的相应单元格相关联的信息
提前致谢
根据 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