首页 > 编程问答 >如何使用Python获取Excel文件中嵌入图像的位置?

如何使用Python获取Excel文件中嵌入图像的位置?

时间:2024-07-31 11:21:25浏览次数:15  
标签:python excel openpyxl

enter image description here 我正在使用包含嵌入图像的 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()

这段代码会:

  1. 使用XlsxWriter加载你的xlsx文件。
  2. 遍历工作簿中的每个工作表。
  3. 对于每个工作表,遍历其中所有的图片。
  4. 使用 _images 属性获取每个图片的信息,包括其所在的行和列。
  5. 使用 xlsxwriter.utility.xl_rowcol_to_cell 函数将行和列转换为单元格引用。
  6. 打印每个图片所在的单元格。

请注意,你需要先安装XlsxWriter库:

pip install XlsxWriter

希望这个解决方案可以帮助你提取xlsx文件中嵌入图片的位置信息。如果你还有其他问题,请随时提出。

标签:python,excel,openpyxl
From: 78810835

相关文章

  • cmd输入python直接弹出windows应用商店
    明明已经安装好了python,并且也确认配置好了python的环境变量,但是在cmd里输入python后,直接弹出windows商店,python获取界面,其实只需要关闭系统里的应用执行别名设置,最近出来的电脑系统里是自带开启了python相关的执行别名。步骤是【设置】-【应用】-【高级应用设计】-【应用执行名称......
  • Python 数学问题:(2**3+(5+6)**(1+1)) =?
    (2**3+(5+6)**(1+1))=?如果您能提供一步一步的解决方案,我将不胜感激。计算机向我展示了答案,但我只是不知道它是如何得出的。所以,如果可以的话,让我知道就太好了。我已经被“**”部分困住了,而且也对“3”的用途感到困惑。我尝试了这个问题,得到了131,但这不是答案。让我......
  • Python - Generators
    Thetaskofimplementingiteratorscanbesimplifiedbyusinggenerators.Wehaveseenhowtocreatecustomiteratorsusingtheobject-orientedway,i.e.,bydefiningaclassthathas__init__,__next__,and__iter__methods.Forexample,wesawtheCubes......
  • Python应用—加密、解密文件
    1.创作需求日常生活中我们有很多文件想要保密。这个脚本可以方便大家对所有的文件类型进行加密,解密。最大程度保护我们的隐私。2.话不多说,直接上代码fromcryptography.fernetimportFernetimportdocx#加密defencrypt_file(filename):#生成密钥key=Fer......
  • 三种语言实现二维前缀和(C++/Python/Java)
    题目输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1,y1,x2,y2表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数......
  • Python rocketMq 客户端的同步和异步模式
    同步模式fromrocketmq.clientimportPushConsumer,ConsumeStatusimporttimedefcallback(msg):print(msg.id,msg.body,msg.get_property('property'))returnConsumeStatus.CONSUME_SUCCESSdefstart_consume_message():consumer=PushCon......
  • python中元组的学习
    元组目录元组元组的概念元组操作元组的常用方法元组的遍历元组的概念Tuple(元组)与列表相似,不同之处遭遇元组的元素不能修改元组表示多个元素组成的序列用于储存一串信息,数据之间使用,分隔元组用()定义#元组的创建info_tuple=("zhangsan",18,1.75)info_tuple2=(1,)#......
  • 尝试通过Python访问.zip文件中的.gz文件
    我有一个包含大量.gz文件的.zip文件,我需要对其进行处理。我想打开.zip,我可以通过以下代码轻松完成:zf=zipfile.ZipFile("file.zip","r")forgzfileinzf.filelist:withgzip.GzipFile(fileobj=zf.open(gzfile.filename,"r"),mode="r")asf:df......
  • python导入包报错ImportError: cannot import name ‘Protocol‘
    python32.pyTraceback(mostrecentcalllast):File"2.py",line5,in<module>importptwt#use"fromsrcimportptwt"foraclonedtherepoFile"……lib/python3.6/site-packages/ptwt/_util.py",line2......
  • Python - Creating your own Iterator
    Inourfirstexample,wewillcreateiterableobjects,which,wheniteratedover,willgiveoutcubesofnumbers,andtheseobjectswillsupportmultipleiterations.classCubes:def__init__(self,start,stop):self.start=startsel......