导读:本期聚焦于小伙伴创作的《如何使用OpenPyXL在Excel单元格中精确插入和调整图片》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用OpenPyXL在Excel单元格中精确插入和调整图片》有用,将其分享出去将是对创作者最好的鼓励。

OpenPyXL是Python中用于读写Excel 2010及以上版本文件的常用库,除了处理单元格数据、样式之外,还支持在Excel工作表中插入图片并调整其位置和尺寸,能够满足在指定单元格中嵌入图片的业务需求。

如何使用OpenPyXL在Excel单元格中精确插入和调整图片

环境准备

首先需要安装OpenPyXL库,同时插入图片功能依赖Pillow库来处理图片文件,执行以下命令完成安装:

pip install openpyxl pillow

核心实现逻辑

要在单元格中精确插入图片,需要明确两个核心要素:一是图片的锚定位置,即图片左上角对应的单元格坐标;二是图片的尺寸,需要计算目标单元格的宽度和高度,将图片调整为匹配的大小。

单元格尺寸单位转换

OpenPyXL中单元格的宽度单位是字符宽度,高度单位是磅,而图片的尺寸单位是像素,需要通过转换公式完成适配:

  • 1个字符宽度约等于7像素
  • 1磅约等于1.33像素

图片插入基础方法

OpenPyXL通过openpyxl.drawing.image.Image类加载图片,再通过worksheet.add_image()方法将图片添加到工作表中,同时可以设置图片的锚定位置和尺寸。

完整代码示例

以下代码实现了在Excel的B2单元格中精确插入图片,并将图片尺寸调整为完全匹配B2单元格的大小:

from openpyxl import Workbook
from openpyxl.drawing.image import Image
from openpyxl.utils import get_column_letter

# 创建新的工作簿
wb = Workbook()
ws = wb.active
ws.title = "图片插入示例"

# 设置目标单元格B2的行高和列宽
target_row = 2
target_col = 2
# 设置列宽为20字符,对应约140像素
ws.column_dimensions[get_column_letter(target_col)].width = 20
# 设置行高为105磅,对应约140像素
ws.row_dimensions[target_row].height = 105

# 加载图片文件,替换为你的图片路径
img = Image("test_image.png")
# 设置图片尺寸匹配单元格,宽度140像素,高度140像素
img.width = 140
img.height = 140

# 将图片锚定到B2单元格左上角
img.anchor = f"{get_column_letter(target_col)}{target_row}"
# 将图片添加到工作表
ws.add_image(img)

# 保存文件
wb.save("output.xlsx")
print("图片插入完成,文件已保存为output.xlsx")

常见问题处理

图片位置偏移问题

如果出现图片位置不在单元格左上角的情况,可以检查锚定坐标是否正确,确保锚定字符串的格式是列字母加行号,例如B2、C3等。

图片尺寸不匹配问题

如果设置的像素尺寸和实际单元格显示不一致,可以重新计算列宽和行高的转换比例,根据实际显示效果微调img.widthimg.height的数值。

图片格式支持问题

OpenPyXL支持常见的图片格式如PNG、JPG、JPEG等,如果遇到格式不支持的错误,可以先将图片转换为支持的格式再尝试插入。

总结

使用OpenPyXL在Excel单元格中精确插入和调整图片的核心是先设置好目标单元格的行高和列宽,再加载图片并调整其尺寸匹配单元格大小,最后将图片锚定到目标单元格位置。通过上述方法可以快速实现Excel中图片的精准嵌入,适配各类办公自动化场景的需求。

OpenPyXLExcel操作单元格图片插入图片尺寸调整Python办公自动化修改时间:2026-07-23 00:36:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。