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

`from openpyxl.drawing.image import Image` 是用于在 Excel 工作表中插入图片的导入语句

from openpyxl.drawing.image import Image是用于在 Excel 工作表中插入图片的导入语句,但该用法已过时且不推荐。自openpyxl2.5 版本起,Image类已从openpyxl.drawing.image移至openpyxl.drawing.spreadsheet_drawing(内部模块),而用户应使用openpyxl.worksheet._images.Image或更准确地说:直接从openpyxl.drawing.image导入Image在新版中虽仍可工作,但存在兼容性风险

✅ 正确、稳定、官方推荐的用法是:

fromopenpyxlimportWorkbookfromopenpyxl.drawing.imageimportImage# ✅ 当前版本(如 3.1.x)仍支持,但需注意路径# 注意:Image 类用于加载图片(如 PNG/JPEG),然后添加到 worksheet

示例:

fromopenpyxlimportWorkbookfromopenpyxl.drawing.imageimportImage wb=Workbook()ws=wb.active# 加载图片(路径需存在)img=Image("example.png")img.anchor="A1"# 设置锚定单元格(左上角)ws.add_image(img)# ⚠️ 注意:不是 ws.add_image(),而是 ws._images.append(img)?错!# ✅ 正确添加方式(openpyxl ≥ 2.6):ws.add_image(img,"A1")# 第二个参数为锚定单元格(自动定位)wb.save("with_image.xlsx")

⚠️ 注意事项:

  • 图片文件必须存在且格式为.png,.jpeg,.jpg.bmp不支持);
  • add_image()的第二个参数是目标单元格(字符串,如"B2"),会自动计算偏移;
  • openpyxl不支持向单元格内嵌入图片(即不能像 Excel 手动“置于单元格内”),图片是浮动对象(anchored);
  • 若报错AttributeError: 'Worksheet' object has no attribute 'add_image',说明版本过低(<2.6),请升级:pip install --upgrade openpyxl
    openpyxl中,无法直接通过.width/.height属性设置图片尺寸(这些属性不存在),但可以通过修改图片对象的widthheight属性(单位为像素)来调整显示大小。⚠️ 注意:该调整仅影响 Excel 中的渲染尺寸,不改变原始图像分辨率,且需在调用ws.add_image(img, anchor)之前设置。

✅ 正确做法(openpyxl ≥ 2.6):

fromopenpyxlimportWorkbookfromopenpyxl.drawing.imageimportImage wb=Workbook()ws=wb.active img=Image("logo.png")# ✅ 调整图片宽高(单位:像素)img.width=200# 宽度设为 200 像素img.height=150# 高度设为 150 像素# ⚠️ 注意:若只设 width 或 height,openpyxl 不自动等比缩放(即不保持宽高比)# 如需等比缩放,需手动计算:# original_w, original_h = img.width, img.height# scale = 0.5# img.width = int(original_w * scale)# img.height = int(original_h * scale)ws.add_image(img,"A1")wb.save("resized_image.xlsx")

📌 补充说明:

  • img.width/img.heightopenpyxl.drawing.image.Image对象的可写属性,底层映射到 Excel 的<xdr:ext>尺寸;
  • 若未显式设置,openpyxl默认使用图片原始像素尺寸;
  • 设置后,Excel 中图片将按指定像素值渲染(受 Excel 缩放和 DPI 影响,实际显示可能略有差异);
  • ❌ 不支持设置厘米/英寸等绝对单位——需自行按 96 DPI 换算(1 英寸 ≈ 96 像素);
  • 若需精确控制(如 5cm × 3cm),可换算:width_px = int(5 * 96 / 2.54) ≈ 189height_px = int(3 * 96 / 2.54) ≈ 113
http://www.jsqmd.com/news/1365665/

相关文章:

  • 抖音无水印下载终极指南:douyin-downloader如何帮你高效管理创作素材
  • 新手入门 OpenClaw 完整操作手册,从下载到指令实操全流程(含安装包)
  • 2026 一站式灯饰平台实测指南:装修 / 软装从业者配灯,高效交付不踩雷 - 互联网科技品牌测评
  • 如何快速获取九大网盘直链:面向新手的完整使用指南
  • PvZ Toolkit终极指南:免费解锁植物大战僵尸无限可能
  • 智能体上下文压缩可视化:用Compactdiff解决LLM记忆黑盒问题
  • 天气丹塑料瓶源头工厂怎么选?厚壁PETG包材公差与ODM代工验货内参
  • 单片机驱动MOS管五大隐形坑:从驱动电压到SOA的实战避坑指南
  • 2026毕业论文修改小程序权威评测:学范文领衔五大工具谁更值得选?
  • 杭州刑事辩护与企业合规怎么选?了解莫骏超律师服务能力 - 一知资讯
  • 从HF事件看AI安全:模型供应链风险防御与实战清单
  • Claude Code跨窗口私聊:从单机AI到分布式智能体协作的实战指南
  • 如何一键智能激活Windows和Office:KMS激活工具完整指南
  • 基于ZYNQ的一站式信号处理平台:从DDS到高速采集的软硬件协同实战
  • 无淋膜热封胶适合哪些包装机?
  • 抖音批量下载工具技术指南:douyin-downloader架构解析与实战应用
  • 合肥少儿机器人培训怎么选?本土14年科创旗舰机构深度拆解 - 一知资讯
  • 基于情感分析与语义嵌入的NLP实战:从“Crazy”文本理解到智能推荐
  • 贵阳代理记账怎么选?别只看价格,先看团队资质、流程透明度和售后保障 - 中国品牌企业推荐网
  • 元器件库与PCB封装库关联介绍
  • 佛山环保家具厂推荐|前家具行业品牌总监实地走访客观测评 - 讲清楚了
  • 场景化AI集成实战:从微信AI帮写看应用智能化新范式
  • CPU性能优化:从主频到IPC的实战指南
  • OpenAI Astra模型:从多模态智能体到实时交互应用开发实战
  • 蓝牙配对(4)Numeric Comparison模式
  • 前缀和算法差分算法(3)——例题详解
  • 企业AI应用Token消耗危机:从原理到实战的完整降本增效方案
  • 卡片液体咖啡代工怎么选?液态锁鲜工艺,天益食品打造便携咖啡新形态 - mac天空
  • 如何选择合适的非标直纹滚花铜质螺母? - 滚动商讯
  • 2026年8月淮北市泳池空气源热泵厂家推荐,淋浴空气源热泵厂家哪家好?地址电话与到店核对|2026年8月10日资料更新 - mobible