Excel文件常作為數據分析和展示的重要工具,承載複雜圖表、形狀等非結構化數據。當我們需要再利用這些圖形化內容元素時,手動逐項提取不僅效率低下,且難以應對大規模文件處理需求。通過Python實現自動化批量保存,能夠突破人工操作的侷限性,顯著提升數據管理的標準化水平——無論是定期生成的可視化報告存檔、跨部門協作中的元素複用,還是構建機器學習訓練所需的圖像數據集,自動化腳本均可確保元素提取的完整性與命名規範性。本文將介紹如何使用Python將Excel文件中的圖表和形狀保存為圖片,從而方便對其再利用。
- 用Python將Excel文件中的圖表保存為圖片
- 用Python將Excel文件中的圖表工作表保存為圖片
- 用Python將Excel文件中的形狀保存為圖片
本文所使用的方法需要用到免費的Free Spire.XLS for Python,PyPI:pip install spire.xls.free。
用Python將Excel文件中的圖表保存為圖片
庫中提供的Workbook.SaveChartAsImage()方法可以將指定工作表中的指定圖表或所有圖表保存為圖片流,然後我們再使用Stream.Save()方法將圖片流保存到文件,即可實現將Excel圖表導出為圖片文件。
需要注意的是,此方法不能保存圖表工作表(僅包含一個圖表且無單元格及其他數據的特殊工作表)為圖片,圖表工作表需要另外進行保存操作。
以下是操作步驟示例:
- 導入所需模塊:
Workbook。 - 創建
Workbook對象,使用Workbook.LoadFromFile()載入Excel文件。 - 遍歷工作簿中的工作表,使用
Workbook.Worksheets.get_Item()方法獲取工作表。 - 使用
Worksheet.Charts屬性獲取工作表中的所有圖表。 - 遍歷工作表中的圖表,使用
Workbook.SaveChartAsImage()方法將圖表保存為圖片流。 - 使用
Stream.Save()方法圖片流保存為文件。 - 釋放資源。
代碼示例
from spire.xls import Workbook
# 創建Workbook對象
workbook = Workbook()
# 載入Excel文件
workbook.LoadFromFile("Sample.xlsx")
# 遍歷Excel文件中的工作表
for i in range(workbook.Worksheets.Count):
# 獲取工作表
worksheet = workbook.Worksheets.get_Item(i)
# 遍歷工作表中的圖表
for j in range(worksheet.Charts.Count):
# 將圖表保存為圖片
image = workbook.SaveChartAsImage(worksheet, j)
# 將圖片保存到文件
image.Save(f"output/Images/Sheet{i}_Chart{j}.png")
workbook.Dispose()
結果
用Python將Excel文件中的圖表工作表保存為圖片
我們可以使用Workbook.ChartSheets屬性獲取工作簿中的所有圖表工作表,然後使用Workbook.SaveChartAsImage()方法將圖表工作表的圖表保存為圖片流,最後再保存為文件。以下是操作步驟示例:
- 導入所需模塊:
Workbook。 - 創建
Workbook對象,使用Workbook.LoadFromFile()載入Excel文件。 - 使用
Workbook.ChartSheets屬性獲取所有圖表工作表。 - 遍歷圖表工作表,並使用
Workbook.SaveChartAsImage()方法將圖表工作表的圖表保存為圖片流。 - 使用
Stream.Save()方法圖片流保存為文件。 - 釋放資源。
代碼示例
from spire.xls import Workbook, XlsShape
# 創建Workbook對象
workbook = Workbook()
# 載入Excel文件
workbook.LoadFromFile("Sample.xlsx")
# 遍歷Excel文件中的圖表工作表
for i in range(len(workbook.Chartsheets)):
# 獲取圖表工作表
sheet = workbook.Chartsheets[i]
# 將圖表工作表保存為圖片流
image = workbook.SaveChartAsImage(sheet)
# 將圖片流保存為圖片文件
image.Save(f"output/Images/Chart.png")
workbook.Dispose()
結果
用Python將Excel文件中的形狀保存為圖片
Worksheet.PrstGeomShapes屬性可以幫助我們獲取一個工作表中的所有形狀,我們可以遍歷獲取到的形狀,然後將其轉換為XlsShape對象並使用XlsShape.SaveToImage()方法將其保存為圖片流,最後實現Excel形狀保存為圖片的操作。以下是操作步驟示例:
- 導入所需模塊:
Workbook。 - 創建
Workbook對象,使用Workbook.LoadFromFile()載入Excel文件。 - 遍歷工作簿中的工作表,使用
Workbook.Worksheets.get_Item()方法獲取工作表。 - 使用
Worksheet.PrstGeomShapes屬性獲取工作表中的所有形狀。 - 遍歷所有形狀,將其轉換為
XlsShape對象,然後使用XlsShape.SaveToImage()方法將其保存為圖片流。 - 使用
Stream.Save()方法圖片流保存為文件。 - 釋放資源。
代碼示例
from spire.xls import Workbook, XlsShape
# 創建Workbook對象
workbook = Workbook()
# 載入Excel文件
workbook.LoadFromFile("Sample.xlsx")
# 遍歷Excel文件中的工作表
for i in range(workbook.Worksheets.Count):
# 獲取工作表
worksheet = workbook.Worksheets.get_Item(i)
# 遍歷工作表中的形狀
for j in range(worksheet.PrstGeomShapes.Count):
# 獲取形狀
shape = worksheet.PrstGeomShapes.get_Item(j)
# 將形狀轉換為XlsShape對象
xlsShape = XlsShape(shape)
# 將形狀保存為圖片流
image = xlsShape.SaveToImage()
# 將圖片流保存到文件
image.Save(f"output/Images/Sheet{i}_Shape{j}.png")
workbook.Dispose()
結果
本文演示瞭如何使用Python將Excel文件中的圖表、形狀以及圖表工作表保存為圖片文件。