当前位置: 首页 > news >正文

`from openpyxl.drawing.image import Image` 是用于在使用 `openpyxl` 库操作 Excel 文件时

from openpyxl.drawing.image import Image是用于在使用openpyxl库操作 Excel 文件时,向工作表中插入图片的导入语句。注意:该Image类并非用于图像处理(如 PIL/Pillow),而是专用于将图片(如 PNG、JPG 等)嵌入到 Excel 工作表中的对象。使用前需确保已安装openpyxl,且图片文件路径有效。

基本用法示例:

fromopenpyxlimportWorkbookfromopenpyxl.drawing.imageimportImage wb=Workbook()ws=wb.active# 创建 Image 对象(路径需为本地绝对或相对路径)img=Image('example.png')img.anchor='A1'# 设置图片锚定单元格(左上角位置)ws.add_image(img)wb.save('with_image.xlsx')

⚠️ 注意事项:

  • openpyxl不支持直接从 URL 加载图片,必须是本地文件;
  • 图片格式建议使用 PNG(兼容性最好),JPG 也可用但需确保无透明通道问题;
  • Image对象不支持缩放、裁剪等编辑操作,仅支持定位与尺寸微调(通过width/height属性间接影响,但实际以原始像素为准,Excel 中可能自动适配);
  • 插入图片后保存的 Excel 文件需用 Excel 或兼容软件打开才能正常显示(部分在线表格工具可能不渲染图片)。
    openpyxl中调整插入图片的大小位置需结合Image对象属性与工作表单元格锚定机制,但需注意:openpyxl.drawing.image.Image本身不直接提供width/height设置接口(这些属性被忽略),实际尺寸由图片原始像素和 Excel 的缩放逻辑决定。不过可通过以下可靠方式实现精准控制:

✅ 1. 调整位置(锚定单元格 + 偏移)

使用anchor属性指定图片左上角锚定的单元格(如'B3'),再通过offset微调像素级偏移:

fromopenpyxl.drawing.imageimportImage img=Image('logo.png')img.anchor='B3'# 锚定到 B3 单元格左上角img.offset=(10,5)# 向右偏移 10px,向下偏移 5px(相对于 B3 左上角)ws.add_image(img)

⚠️offset单位为像素,且仅在保存后由 Excel 渲染时生效。


✅ 2. 调整大小(核心方法:修改图片原始尺寸或利用 Excel 单元格行列高宽)

由于openpyxl不支持运行时缩放图片,推荐两种实践方案:

▪ 方案 A:预处理图片(推荐 ✅)

用 Pillow(PIL)提前缩放图片,再插入:

fromPILimportImageasPilImagefromopenpyxl.drawing.imageimportImageasOpenpyxlImage# 缩放原图至目标尺寸(例如 200×100 像素)pil_img=PilImage.open('logo.png')pil_img=pil_img.resize((200,100),PilImage.Resampling.LANCZOS)pil_img.save('logo_resized.png')# 保存临时缩放图img=OpenpyxlImage('logo_resized.png')img.anchor='B3'ws.add_image(img)
▪ 方案 B:匹配 Excel 行高列宽(间接控制显示大小)

Excel 中图片会按比例适应其覆盖的单元格区域。可手动设置行列尺寸,使图片“视觉上”缩放:

# 设置 B3 所在行高(单位:磅)和列宽(单位:字符宽度)ws.row_dimensions[3].height=60# 第3行高 ≈ 60 磅(约80像素)ws.column_dimensions['B'].width=20# B列宽 ≈ 20 字符(约150像素)# 再插入图片并锚定到 B3,Excel 会自动按单元格比例缩放显示

💡 提示:openpyxlcolumn_dimensions.widthrow_dimensions.height可精确控制,是间接调控图片显示尺寸的有效手段。


❌ 不起作用的方式(常见误区)

  • img.width = 200img.height = 100无效!Image类无此可写属性;
  • img.scale_x = 0.5不存在该属性openpyxl当前版本(3.1+)不支持运行时缩放。

✅ 进阶:动态计算锚点以居中/对齐

# 将图片居中于单元格区域 C5:E10start_row,end_row=5,10start_col,end_col=3,5# C=3, E=5# 计算中心单元格(取整)center_row=(start_row+end_row)//2center_col=get_column_letter((start_col+end_col)//2)# 需 from openpyxl.utils import get_column_letterimg.anchor=f"{center_col}{center_row}"

http://www.jsqmd.com/news/1313151/

相关文章:

  • 2026年GEO工具哪个好用?深度拆解源头厂家的选择标准与避坑指南 - 品牌报告
  • 基于Jetson AGX Orin与GMSL摄像头的多目视觉3D感知系统实战
  • 视频资源下载神器:3分钟掌握全网视频下载的终极免费工具
  • MouseTracks 终极指南:如何将鼠标键盘操作转化为惊艳数据可视化
  • reComputer边缘AI硬件选型、部署与优化全指南
  • PHP紧急修复三处高危漏洞:PostgreSQL扩展SQL注入威胁升级,开发者需立即升级
  • Noto字体完整指南:如何用800+语言支持彻底告别豆腐块问题
  • 变工况轴承故障诊断实战:从振动信号处理到机器学习模型构建
  • 构建ICCV会议信息查询工具:从数据模型到前端实现
  • 2026年江西省废锡/锡渣/锡膏回收企业选购指南 - 品牌品鉴馆
  • 树莓派CM4驱动6.25英寸DSI LCD全攻略:从硬件连接到设备树配置
  • 2026葫芦岛宠物店推荐宠物市场消费指南5家门店值得信赖 - 莘州文化
  • 5分钟掌握免费歌词获取:163MusicLyrics全能工具终极指南
  • Cadence Allegro实战:8层高速板DDR模块布局布线完整流程解析
  • JS逆向实战:顶像滑块验证码轨迹生成与加密参数破解
  • Unity物理引擎实现铰链四杆机构仿真:快速原型验证与可视化
  • 2026网盘解析提速教程:结合解析与下载器跑满带宽
  • 3步找回加密压缩包密码:ArchivePasswordTestTool 终极指南
  • 2026敢为云工厂智能体深度解析:离散制造轻量化赛道的全栈实践与价值 - 滚动商讯
  • 2026沈阳闲置首饰变现实录:易奢福15分钟当面鉴定当场秒打款 - 易奢福
  • 晋中旧金回收称重藏陷阱,老手分享避坑方法 - 不晚生活号
  • 2026湖州宠物店推荐买宠防骗实操攻略5家门店值得信赖 - 莘州文化
  • 植物大战僵尸创意工坊模组:僵尸视角塔防与最高难度挑战
  • 温度传感器选型实战指南:从原理到场景,精准避坑
  • 2026合肥肥东县高考滑档生别放弃!合肥共达针对性提分!怎么报名?在哪报名?联系方式多少? - 最新资讯
  • SolidWorks进阶:配置、设计库与模板实战,打造高效工程设计流程
  • reComputer边缘AI设备选型与部署实战:从Jetson模块到工业应用
  • 五平台实测告诉你买二手苹果手表哪个平台更便宜,爱回收综合表现突出 - 品牌品鉴馆
  • 2026沈阳闲置旧金变现实录:易奢福从验金到打款仅用10分钟 - 易奢福
  • 捷米特 JM-YK-CAN/FD 模块,储能集装箱 BMS 远程云监控解决方案