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图表导出为图片文件。
需要注意的是,此方法不能保存图表工作表(仅包含一个图表且无单元格及其他数据的特殊工作表)为图片,图表工作表需要另外进行保存操作。
以下是操作步骤示例:

  1. 导入所需模块:Workbook
  2. 创建Workbook对象,使用Workbook.LoadFromFile()载入Excel文件。
  3. 遍历工作簿中的工作表,使用Workbook.Worksheets.get_Item()方法获取工作表。
  4. 使用Worksheet.Charts属性获取工作表中的所有图表。
  5. 遍历工作表中的图表,使用Workbook.SaveChartAsImage()方法将图表保存为图片流。
  6. 使用Stream.Save()方法图片流保存为文件。
  7. 释放资源。

代码示例

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图表为图片

用Python将Excel文件中的图表工作表保存为图片

我们可以使用Workbook.ChartSheets属性获取工作簿中的所有图表工作表,然后使用Workbook.SaveChartAsImage()方法将图表工作表的图表保存为图片流,最后再保存为文件。以下是操作步骤示例:

  1. 导入所需模块:Workbook
  2. 创建Workbook对象,使用Workbook.LoadFromFile()载入Excel文件。
  3. 使用Workbook.ChartSheets属性获取所有图表工作表。
  4. 遍历图表工作表,并使用Workbook.SaveChartAsImage()方法将图表工作表的图表保存为图片流。
  5. 使用Stream.Save()方法图片流保存为文件。
  6. 释放资源。

代码示例

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图表工作表为图片

用Python将Excel文件中的形状保存为图片

Worksheet.PrstGeomShapes属性可以帮助我们获取一个工作表中的所有形状,我们可以遍历获取到的形状,然后将其转换为XlsShape对象并使用XlsShape.SaveToImage()方法将其保存为图片流,最后实现Excel形状保存为图片的操作。以下是操作步骤示例:

  1. 导入所需模块:Workbook
  2. 创建Workbook对象,使用Workbook.LoadFromFile()载入Excel文件。
  3. 遍历工作簿中的工作表,使用Workbook.Worksheets.get_Item()方法获取工作表。
  4. 使用Worksheet.PrstGeomShapes属性获取工作表中的所有形状。
  5. 遍历所有形状,将其转换为XlsShape对象,然后使用XlsShape.SaveToImage()方法将其保存为图片流。
  6. 使用Stream.Save()方法图片流保存为文件。
  7. 释放资源。

代码示例

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形状为图片

本文演示了如何使用Python将Excel文件中的图表、形状以及图表工作表保存为图片文件。


大丸子
72 声望5 粉丝