Python批量保存Excel文件中的图表为图片

Excel工作簿作为一款功能强大的数据处理与分析工具,被广泛应用于各种领域,不仅能够方便地组织和计算数据,还支持用户创建丰富多彩的图表,直观展示数据背后的洞察与趋势。然而,在报告编制、网页内容制作或分享数据分析成果时,直接嵌入整个Excel文件往往不够便捷,且可能受限于接收者的软件兼容性问题。而将Excel文件中的图表保存为图片格式(如PNG、JPEG等)则可以解决这些问题,不仅能确保图表的显示一致性跨平台,便于插入到PPT、文档或网页中,还能有效降低文件大小,加速在线传输与加载速度。本文将详细介绍如何利用Python自动化实现从Excel文件中提取图表并保存为图片

文章目录

本文所使用的方法基于Spire.XLS for Python,PyPI:pip install Spire.XLS

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

该库中的Workbook.SaveChartAsImage()方法和Workbook.SaveChartAsEmfImage()方法能够将图片保存为图片和EMF图片流,之后我们再将图片流保存到文件,即可实现提取图表并保存为图像的操作。

以下是操作步骤:

  1. 导入所需模块。
  2. 创建Workbook对象并使用Workbook.LoadFromFile()方法载入Excel文件。
  3. 遍历文件中的工作表,使用Workbook.Worksheets.get_Item()方法获取工作表。
  4. 遍历工作表中的图表,使用Workbook.SaveChartAsImage().Save()方法将图表保存到图片文件。
  5. 释放资源。

代码示例

python 复制代码
from spire.xls import *
from spire.xls.common import *

# 创建Workbook实例
workbook = Workbook()

# 载入Excel文件
workbook.LoadFromFile("示例.xlsx")

# 遍历文件中的工作表
for i in range(0, workbook.Worksheets.Count):
    # 获取工作表
    worksheet = workbook.Worksheets.get_Item(i)
    # 遍历工作表中的图表
    for j in range(0, worksheet.Charts.Count):
        # 将图表保存为图片
        chartImage = workbook.SaveChartAsImage(worksheet, j).Save(f"output/charts/chart{i+1}_{j+1}.png")

workbook.Dispose()

保存结果

用Python将Excel图表工作表保存为图片

图表工作表(Chart Sheet)是Excel工作簿中专门用于显示图表的一个独立工作表类型,其中只包含一个图表。我们可以使用Workbook.GetChartSheetByName()方法通过工作表名获取指定图表工作表,并使用Workbook.SaveChartAsImage(chartSheet: ChartSheet).Save()方法将其转换为图片并保存。以下是操作步骤:

  1. 导入所需模块。
  2. 创建Workbook对象并使用Workbook.LoadFromFile()方法载入Excel文件。
  3. 使用Workbook.GetChartSheetByName()方法获取指定图表工作表。
  4. 使用Workbook.SaveChartAsImage().Save()方法将图表工作表保存为图像。
  5. 释放资源。

代码示例

python 复制代码
from spire.xls import *
from spire.xls.common import *

# 创建一个Workbook实例
workbook = Workbook()

# 加载一个Excel文件
workbook.LoadFromFile("示例.xlsx")

# 获取一个图表工作表
chartSheet = workbook.GetChartSheetByName("图表一")

# 将图表工作表保存为图片
workbook.SaveChartAsImage(chartSheet).Save("output/charts/chartsheet.png")

workbook.Dispose()

结果

本文介绍了如何使用Python将Excel工作簿中的图表批量保存为图片。

更多Excel文件操作技巧请前往Spire.XLS for Python教程查看。

相关推荐
eqwaak09 分钟前
Matplotlib 动画显示进阶:交互式控制、3D 动画与未来趋势
python·tcp/ip·3d·语言模型·matplotlib
GilgameshJSS15 分钟前
【学习K230-例程23】GT6700-音频FFT柱状图
python·学习·音视频
郝学胜-神的一滴29 分钟前
深入探索 C++ 元组:从基础到高级应用
开发语言·c++·stl·软件工程
I'm a winner30 分钟前
第七章:AI进阶之------输入与输出函数(一)
开发语言·人工智能·python·深度学习·神经网络·microsoft·机器学习
木心操作38 分钟前
js生成excel表格进阶版
开发语言·javascript·ecmascript
arbboter1 小时前
【自动化】深入浅出UIAutomationClient:C#桌面自动化实战指南
运维·c#·自动化·inspect·uiautomation·uia·桌面自动化
听情歌落俗1 小时前
MATLAB3-1变量-台大郭彦甫
开发语言·笔记·算法·matlab·矩阵
ERP老兵_冷溪虎山1 小时前
Python/JS/Go/Java同步学习(第十三篇)四语言“字符串转码解码“对照表: 财务“小南“纸式转码术处理凭证乱码崩溃(附源码/截图/参数表/避坑指南)
java·后端·python
zhangfeng11331 小时前
在 R 语言里,`$` 只有一个作用 按名字提取“列表型”对象里的单个元素 对象 $ 名字
开发语言·windows·r语言
文弱书生6562 小时前
5.后台运行设置和包设计与实现
服务器·开发语言·c#