通过 Python 在 Excel 中添加或删除图片
<p>在数据处理与办公自动化场景中,Excel 文件常需嵌入图片以增强可视化表达。然而,手动添加或删除图片不仅效率低下,还容易出错。如何用 Python 实现 Excel 中图片的自动化管理?答案是:使用 Free Spire.XLS for Python 免费库。</p><p>本文将系统介绍如何通过 Python 代码,在 Excel 文件中<strong>添加图片</strong>和<strong>删除图片</strong>,并提供完整示例与操作流程。内容基于真实可用的技术方案,适用于数据分析师、自动化工程师及办公自动化爱好者。</p>
<h2 id="为什么选择-python--free-spirexls">为什么选择 Python + Free Spire.XLS?</h2>
<p>在众多 Python 库中,如 <code>pandas</code>、<code>openpyxl</code> 等,虽然能处理 Excel 表格结构,但<strong>对图片操作支持有限</strong>。例如:</p>
<ul>
<li><code>openpyxl</code> 只能读写单元格内容,无法直接操作图片。</li>
<li><code>xlwings</code> 虽可调用 Excel 界面,但依赖运行环境,不适用于脚本自动化。</li>
</ul>
<p>相比之下,<strong>Free Spire.XLS for Python</strong> 是一款专为处理 Excel 文件设计的跨平台库,支持图片的添加、删除、裁剪、格式调整等完整功能,且无需安装 Excel,无需依赖 COM 接口,完全在 Python 环境中运行。</p>
<p>✅ 优势总结如下:</p>
<table>
<thead>
<tr>
<th>对比维度</th>
<th>Free Spire.XLS for Python</th>
<th>openpyxl / xlwings</th>
</tr>
</thead>
<tbody>
<tr>
<td>图片添加支持</td>
<td>✅ 支持</td>
<td>❌ 仅支持单元格内容</td>
</tr>
<tr>
<td>图片删除支持</td>
<td>✅ 支持</td>
<td>❌ 无直接接口</td>
</tr>
<tr>
<td>无需 Excel 运行</td>
<td>✅ 支持</td>
<td>❌ 需Excel环境</td>
</tr>
<tr>
<td>脚本自动化</td>
<td>✅ 高效</td>
<td>⚠️ 依赖外部环境</td>
</tr>
</tbody>
</table>
<blockquote>
<p>📌 说明:Free Spire.XLS for Python 支持 .xlsx 和 .xls 格式,但有篇幅限制,适用于小型文档。</p>
</blockquote>
<h2 id="python-添加图片到-excel-中的完整流程">Python 添加图片到 Excel 中的完整流程</h2>
<h3 id="步骤1安装库">步骤1:安装库</h3>
<pre><code class="language-bash">pip install spire.xls.free
</code></pre>
<h3 id="步骤2代码示例--将图片添加到指定单元格位置">步骤2:代码示例 — 将图片添加到指定单元格位置</h3>
<p>该场景适用于图片需与单元格内容对齐的情况(如报表中图片对应某行数据),核心是通过 <code>Worksheet.Pictures.Add()</code> 指定图片路径和目标单元格。</p>
<pre><code class="language-python">from spire.xls import *
from spire.xls.common import *
# 创建工作簿对象
workbook = Workbook()
# 获取第一个工作表
sheet = workbook.Worksheets
# 添加图片到工作表指定单元格
imgPath = "logo.png"
picture = sheet.Pictures.Add(1, 3, imgPath)
# 调整单元格大小以容纳图片
sheet.Columns.ColumnWidth = 25
sheet.Rows.RowHeight = 135
# 保存文件
workbook.SaveToFile("InsertImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
</code></pre>
<h3 id="扩展技能自定义图片位置和尺寸添加">扩展技能:自定义图片位置和尺寸添加</h3>
<p>若需精确控制图片的坐标和宽高,可通过 <code>ExcelPicture</code> 提供的 <code>LeftColumnOffset</code> / <code>TopRowOffset</code> / <code>Width</code> / <code>Height</code> 属性设置:</p>
<pre><code class="language-python">from spire.xls import *
from spire.xls.common import *
# 创建工作簿对象
workbook = Workbook()
# 获取第一个工作表
sheet = workbook.Worksheets
# 添加图片到工作表指定单元格
imgPath = "logo.png"
picture = sheet.Pictures.Add(1, 3, imgPath)
# 自定义图片位置
picture.LeftColumnOffset = 90 # 左侧偏移90
picture.TopRowOffset = 20 # 顶部偏移20
# 自定义图片尺寸
picture.Width = 150
picture.Height = 150
# 保存文件
workbook.SaveToFile("add_custom_size_image.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
</code></pre>
<h2 id="通过-python-删除-excel-中图片的实现方法">通过 Python 删除 Excel 中图片的实现方法</h2>
<p>Free Spire.XLS for Python 支持按索引删除指定图片或批量删除所有图片,以下是具体实现。</p>
<h3 id="场景-1删除指定位置的图片">场景 1:删除指定位置的图片</h3>
<p>工作表中的图片以列表形式存储在 <code>Pictures</code> 属性中,可通过索引(从 0 开始)定位并删除:</p>
<pre><code class="language-python">from spire.xls import *
from spire.xls.common import *
# 加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("InsertImage.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets
# 删除工作表中第一张图片
sheet.Pictures.Remove()
# 保存文件
workbook.SaveToFile("DeleteImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
</code></pre>
<h4 id="删除工作表中所有图片">删除工作表中所有图片</h4>
<p>通过遍历 <code>Pictures</code> 列表,批量删除所有图片:</p>
<pre><code class="language-python">from spire.xls import *
from spire.xls.common import *
# 加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("InsertImage.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets
# 删除工作表中所有图片
for i in range(sheet.Pictures.Count - 1, -1, -1):
sheet.Pictures.Remove()
# 保存文件
workbook.SaveToFile("DeleteAllImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
</code></pre>
<p>📌 <strong>提示</strong>:删除后,单元格将恢复为纯文本或空白。</p>
<h2 id="实际应用场景与建议">实际应用场景与建议</h2>
<table>
<thead>
<tr>
<th>场景</th>
<th>推荐操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>数据报告生成</td>
<td>自动添加图表或截图</td>
</tr>
<tr>
<td>项目进度可视化</td>
<td>在任务表中嵌入进度图</td>
</tr>
<tr>
<td>采购单/合同文件处理</td>
<td>添加公司 Logo 或审批页图片</td>
</tr>
<tr>
<td>自动化审计流程</td>
<td>删除旧版本中的冗余图片</td>
</tr>
</tbody>
</table>
<hr>
<p>Free Spire.XLS for Python 为 Python 开发者提供了轻量、免费的 Excel 图片操作方案,无需依赖 Microsoft Excel 即可完成图片的添加(指定单元格 / 自定义尺寸)和删除(指定图片 / 批量删除)。其优势在于跨平台兼容性和简洁的 API 设计,在实际应用中,可结合批量文件遍历等逻辑,进一步扩展功能,提升 Excel 处理的自动化效率。</p><br><br>
来源:https://www.cnblogs.com/jazz-z/p/19370207
頁:
[1]