Python 在Excel中插入、替換、提取、或刪除圖片

E-iceblue發表於2024-10-21

Excel是主要用於處理表格和資料的工具,我們也能在其中插入、編輯或管理圖片,為工作表增添視覺效果,提升報告的吸引力。本文將詳細介紹如何使用Python操作Excel中的圖片,包含以下4個基礎示例:

  • Python 在Excel中插入圖片
  • Python 替換Excel中的圖片
  • Python 提取Excel中的圖片
  • Python 刪除Excel中的圖片

首先需要安裝第三方Python庫- Spire.XLS for Python。可以下載產品後再從本地路徑安裝使用,也可以直接使用以下pip命令安裝:

pip install Spire.XLS

Python 在Excel中插入圖片

我們可以使用Spire.XLS for Python庫在指定單元格中插入圖片,並設定圖片大小等。操作如下:

  1. 建立工作簿Workbook物件並獲取指定工作表;
  2. 使用Worksheet.Pictures.Add(int topRow, int leftColumn, Image image)方法在工作表指定單元格中插入圖片;
  3. 透過ExcelPicture類下的各屬性設定圖片的寬度、高度、與單元格邊框的距離等;
  4. 使用SaveToFile()方法儲存Excel檔案。

示例程式碼:

from spire.xls import *
from spire.xls.common import *
     
# 建立Workbook物件
workbook = Workbook()

# 獲取第一張工作表
sheet = workbook.Worksheets[0]

# 在指定單元格中插入圖片(此處為第一行第二列,即B1單元格)
picture = sheet.Pictures.Add(1, 2, "示例.png")

# 設定圖片寬高度
picture.Width = 120
picture.Height = 120

# 調整圖片所在位置的列寬和行高
sheet.Columns[1].ColumnWidth = 20
sheet.Rows[0].RowHeight = 110

# 設定單元格邊框與圖片之間的距離
picture.LeftColumnOffset = 90
picture.TopRowOffset = 20

# 儲存檔案
workbook.SaveToFile("插入圖片.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Python 替換Excel中的圖片

要用新圖片替換Excel中的原有圖片,可以參考如下步驟:

  1. 載入Excel檔案,並獲取指定工作表;
  2. 透過Worksheet.Pictures[]屬性獲取指定圖片;
  3. 載入新圖,並透過ExcelPicture.Picture屬性將指定圖片替換為新圖;
  4. 使用SaveToFile()方法儲存Excel檔案。

示例程式碼:

from spire.xls import *
from spire.xls.common import *

# 載入Excel文件
workbook = Workbook()
workbook.LoadFromFile ("插入圖片.xlsx")

# 獲取第一張工作表
sheet = workbook.Worksheets[0]

# 獲取工作表中第一張圖片
excelPicture = sheet.Pictures[0]
            
# 替換圖片
excelPicture.Picture = Image.FromFile("pic.jpg")

# 儲存文件
workbook.SaveToFile("替換圖片.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Python 提取Excel中的圖片

Spire.XLS for Python庫也可以讀取Excel文件中的圖片,並儲存到指定的檔案路徑。步驟如下:

  1. 載入Excel檔案,並獲取指定工作表;
  2. 遍歷工作表中的所有圖片;
  3. 呼叫ExcelPicture.Picture.Save()方法提取Excel中的圖片。


示例程式碼:

from spire.xls import *
from spire.xls.common import *

# 載入Excel文件
workbook = Workbook()
workbook.LoadFromFile("圖示.xlsx")

# 獲取第一張工作表
sheet = workbook.Worksheets[0]

# 獲取工作表中所有圖片
for i in range(sheet.Pictures.Count - 1, -1, -1):
    pic = sheet.Pictures[i]

    # 儲存圖片
    pic.Picture.Save("提取圖片\\圖片-{0:d}.png".format(i), ImageFormat.get_Png())

workbook.Dispose()

Python 刪除Excel中的圖片

Worksheet.Pictures[imgIndex].Remove() 方法允許我們透過索引刪除指定圖片。要刪除Excel中所有圖片,可以遍歷每張圖片然後刪除。示例程式碼如下:

from spire.xls import *
from spire.xls.common import *

# 載入Excel文件
workbook = Workbook()
workbook.LoadFromFile("圖示.xlsx")

# 獲取第一張工作表
sheet = workbook.Worksheets[0]

# 刪除工作表中所有圖片
for i in range(sheet.Pictures.Count - 1, -1, -1):
    sheet.Pictures[i].Remove()

# 刪除指定圖片
# sheet.Pictures[imgIndex].Remove()

# 儲存文件
workbook.SaveToFile("刪除圖片.xlsx", ExcelVersion.Version2013)
workbook.Dispose()


上述示例能幫助掌握使用Python在Excel中插入、替換、刪除圖片的技巧,並進行一些基本的圖片設定。如有問題,可前往論壇交流。

相關文章