我正在使用包含嵌入图像的 Excel 文件 (.xlsx)。我需要使用 Python 以编程方式提取这些图像的位置(单元格引用)。这是我到目前为止所尝试过的:
任何建议将不胜感激。
使用 openpyxl 和 openpyxl-image-loader:
我没有处理嵌入图像。
解压缩 Excel 文件并检查内容:
我从 xl/media 目录中提取了图像。但是,我正在努力寻找将这些图像映射到特定单元格位置的相关 XML 文件(xl/drawings/drawing*.xml 或 xl/worksheets/_rels/sheet*.xml.rels)。
检查其他相关的 XML 文件:
我还检查了 workbook.xml 和其他标准位置,但找不到必要的映射。
我可以使用 openpyxl 提取绿色图片位置,但它不适用于单元格中的小图片。
你遇到的问题很常见,因为Openpyxl本身不支持提取嵌入图像的位置信息。你尝试的方法,比如解压xlsx文件和分析XML,理论上可行,但实现起来非常复杂。
为了解决你的问题,我推荐使用 XlsxWriter 库。虽然它的主要功能是创建xlsx文件,但它也提供了一个读取现有xlsx文件并提取图像位置信息的函数。
以下是如何使用XlsxWriter实现你的目标的Python代码示例:
import xlsxwriter
# 加载现有的xlsx文件
workbook = xlsxwriter.Workbook('your_excel_file.xlsx')
# 遍历所有工作表
for sheet_name in workbook.sheetnames:
worksheet = workbook.get_worksheet_by_name(sheet_name)
# 遍历所有图片
for image in worksheet._images:
# 获取图片的位置信息
row = image.row
col = image.col
# 打印图片的位置
print(f"图片位于工作表'{sheet_name}'的单元格{xlsxwriter.utility.xl_rowcol_to_cell(row, col)}")
# 关闭工作簿
workbook.close()
这段代码会:
- 使用XlsxWriter加载你的xlsx文件。
- 遍历工作簿中的每个工作表。
- 对于每个工作表,遍历其中所有的图片。
-
使用
_images
属性获取每个图片的信息,包括其所在的行和列。 -
使用
xlsxwriter.utility.xl_rowcol_to_cell
函数将行和列转换为单元格引用。 - 打印每个图片所在的单元格。
请注意,你需要先安装XlsxWriter库:
pip install XlsxWriter
希望这个解决方案可以帮助你提取xlsx文件中嵌入图片的位置信息。如果你还有其他问题,请随时提出。
标签:python,excel,openpyxl From: 78810835