在數據處理與辦公自動化場景中,Excel 文件常需嵌入圖片以增強可視化表達。然而,手動添加或刪除圖片不僅效率低下,還容易出錯。如何用 Python 實現 Excel 中圖片的自動化管理?答案是:使用 Free Spire.XLS for Python 免費庫。
本文將系統介紹如何通過 Python 代碼,在 Excel 文件中添加圖片和刪除圖片,並提供完整示例與操作流程。內容基於真實可用的技術方案,適用於數據分析師、自動化工程師及辦公自動化愛好者。
為什麼選擇 Python + Free Spire.XLS?
在眾多 Python 庫中,如 pandas、openpyxl 等,雖然能處理 Excel 表格結構,但對圖片操作支持有限。例如:
openpyxl只能讀寫單元格內容,無法直接操作圖片。xlwings雖可調用 Excel 界面,但依賴運行環境,不適用於腳本自動化。
相比之下,Free Spire.XLS for Python 是一款專為處理 Excel 文件設計的跨平台庫,支持圖片的添加、刪除、裁剪、格式調整等完整功能,且無需安裝 Excel,無需依賴 COM 接口,完全在 Python 環境中運行。
✅ 優勢總結如下:
| 對比維度 | Free Spire.XLS for Python | openpyxl / xlwings |
|---|---|---|
| 圖片添加支持 | ✅ 支持 | ❌ 僅支持單元格內容 |
| 圖片刪除支持 | ✅ 支持 | ❌ 無直接接口 |
| 無需 Excel 運行 | ✅ 支持 | ❌ 需Excel環境 |
| 腳本自動化 | ✅ 高效 | ⚠️ 依賴外部環境 |
📌 説明:Free Spire.XLS for Python 支持 .xlsx 和 .xls 格式,但有篇幅限制,適用於小型文檔。
Python 添加圖片到 Excel 中的完整流程
步驟1:安裝庫
pip install spire.xls.free
步驟2:代碼示例 — 將圖片添加到指定單元格位置
該場景適用於圖片需與單元格內容對齊的情況(如報表中圖片對應某行數據),核心是通過 Worksheet.Pictures.Add() 指定圖片路徑和目標單元格。
from spire.xls import *
from spire.xls.common import *
# 創建工作簿對象
workbook = Workbook()
# 獲取第一個工作表
sheet = workbook.Worksheets[0]
# 添加圖片到工作表指定單元格
imgPath = "logo.png"
picture = sheet.Pictures.Add(1, 3, imgPath)
# 調整單元格大小以容納圖片
sheet.Columns[2].ColumnWidth = 25
sheet.Rows[0].RowHeight = 135
# 保存文件
workbook.SaveToFile("InsertImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
擴展技能:自定義圖片位置和尺寸添加
若需精確控制圖片的座標和寬高,可通過 ExcelPicture 提供的 LeftColumnOffset / TopRowOffset / Width / Height 屬性設置:
from spire.xls import *
from spire.xls.common import *
# 創建工作簿對象
workbook = Workbook()
# 獲取第一個工作表
sheet = workbook.Worksheets[0]
# 添加圖片到工作表指定單元格
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()
通過 Python 刪除 Excel 中圖片的實現方法
Free Spire.XLS for Python 支持按索引刪除指定圖片或批量刪除所有圖片,以下是具體實現。
場景 1:刪除指定位置的圖片
工作表中的圖片以列表形式存儲在 Pictures 屬性中,可通過索引(從 0 開始)定位並刪除:
from spire.xls import *
from spire.xls.common import *
# 加載 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("InsertImage.xlsx")
# 獲取第一個工作表
sheet = workbook.Worksheets[0]
# 刪除工作表中第一張圖片
sheet.Pictures[0].Remove()
# 保存文件
workbook.SaveToFile("DeleteImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
刪除工作表中所有圖片
通過遍歷 Pictures 列表,批量刪除所有圖片:
from spire.xls import *
from spire.xls.common import *
# 加載 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("InsertImage.xlsx")
# 獲取第一個工作表
sheet = workbook.Worksheets[0]
# 刪除工作表中所有圖片
for i in range(sheet.Pictures.Count - 1, -1, -1):
sheet.Pictures[i].Remove()
# 保存文件
workbook.SaveToFile("DeleteAllImage.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
📌 提示:刪除後,單元格將恢復為純文本或空白。
實際應用場景與建議
| 場景 | 推薦操作 |
|---|---|
| 數據報告生成 | 自動添加圖表或截圖 |
| 項目進度可視化 | 在任務表中嵌入進度圖 |
| 採購單/合同文件處理 | 添加公司 Logo 或審批頁圖片 |
| 自動化審計流程 | 刪除舊版本中的冗餘圖片 |
Free Spire.XLS for Python 為 Python 開發者提供了輕量、免費的 Excel 圖片操作方案,無需依賴 Microsoft Excel 即可完成圖片的添加(指定單元格 / 自定義尺寸)和刪除(指定圖片 / 批量刪除)。其優勢在於跨平台兼容性和簡潔的 API 設計,在實際應用中,可結合批量文件遍歷等邏輯,進一步擴展功能,提升 Excel 處理的自動化效率。