Python 一键导出 Excel 中的图表和形状为图片

在数据处理和报告生成场景中,Excel 文件中的图表和形状往往需要被提取为独立的图片文件,以便用于演示文稿、网页展示或进一步的可视化分析。手动逐项导出的方式效率较低,难以应对批量处理需求。本文将介绍如何利用 Spire.XLS for Python 库,通过 Python 代码将 Excel 工作表中的图表和形状导出为图片,并保存为 PNG、JPG 等常见格式。

该库的一个特点是独立于本地安装的 Microsoft Office 环境运行,可以在服务器端或没有图形界面的 Linux 环境中部署和使用。

环境配置

开始之前,需要通过 pip 安装所需的库:

bash 复制代码
pip install Spire.XLS

如果使用该库的免费版本,对应的包名为 spire.xls.free。安装完成后,即可在 Python 脚本中引用相关模块。

导出工作表中的图表为图片

对于嵌入在工作表中的图表,可以使用 Workbook.SaveChartAsImage() 方法将其保存为图片流。该方法支持导出单个图表或工作表中的所有图表。

以下示例演示了如何将指定工作表中的所有图表导出为 PNG 图片:

python 复制代码
from spire.xls import Workbook

# 创建 Workbook 对象并加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("示例.xlsx")

# 获取第一个工作表
sheet = workbook.Worksheets[0]

# 遍历工作表中的所有图表并导出为图片
for i in range(sheet.Charts.Count):
    image = workbook.SaveChartAsImage(sheet, i)
    image.Save(f"图表_{i}.png")

workbook.Dispose()

如果只需要导出工作表中的特定图表,可以在 SaveChartAsImage 方法中指定图表索引,索引从 0 开始。

导出图表工作表中的图表

在 Excel 中,图表工作表(Chart Sheet)是一种特殊的工作表类型,其整个页面仅用于显示单个图表,不包含单元格数据。针对这种类型,需要使用不同的方法进行导出:

python 复制代码
from spire.xls import Workbook

workbook = Workbook()
workbook.LoadFromFile("示例.xlsx")

# 获取第一个图表工作表
chart_sheet = workbook.Chartsheets[0]

# 将图表工作表导出为图片
image = workbook.SaveChartAsImage(chart_sheet)
image.Save("图表工作表.png")

workbook.Dispose()

导出工作表中的形状为图片

除了图表,Excel 工作表中还可能包含文本框、几何形状、组合框等各类形状元素。这些形状可以通过 Worksheet.PrstGeomShapes 属性获取,然后使用 XlsShape.SaveToImage() 方法导出为图片。

python 复制代码
from spire.xls import Workbook, XlsShape

workbook = Workbook()
workbook.LoadFromFile("示例.xlsx")

sheet = workbook.Worksheets[0]

# 遍历所有预设几何形状
for i, shape in enumerate(sheet.PrstGeomShapes):
    # 将形状转换为 XlsShape 对象
    xls_shape = XlsShape(shape)
    image = xls_shape.SaveToImage()
    image.Save(f"形状_{i}.png")

workbook.Dispose()

对于文本框、复选框等其他类型的元素,可以通过 Worksheet.TextBoxesWorksheet.CheckBoxes 等属性获取,同样调用 SaveToImage() 方法即可导出。

注意事项

  • 图表与图表工作表的区别Workbook.SaveChartAsImage(worksheet, index) 方法适用于普通工作表中嵌入的图表,而图表工作表需要使用 Workbook.SaveChartAsImage(chartsheet) 的重载方法。如果混淆这两种调用方式,可能会导致类型错误或无法正确导出。
  • 资源释放 :操作完成后,调用 workbook.Dispose() 有助于及时释放文件句柄和内存资源,避免因重复操作导致的内存占用问题。
  • 授权说明:该库提供免费版本供开发测试使用,免费版可能对某些功能或文件处理规模有所限制。在项目集成前,建议查阅其授权条款,确认是否符合使用场景。

总结

通过 Spire.XLS for Python 提供的 SaveChartAsImageSaveToImage 方法,可以较为简洁地实现 Excel 中图表和形状的批量导出。这种方法避免了依赖本地 Excel 程序的复杂性,适合在自动化脚本或服务端应用中使用。实际使用时,需要根据图表类型(普通工作表图表或图表工作表)选择合适的方法,并留意资源释放等细节。

相关推荐
ai2work2 小时前
17 · composer 进阶
python
L@ncor2 小时前
第二章 智能体发展史 · 学习笔记
人工智能·python
asdzx672 小时前
Python 实战:基于 Spire.PDF 为 PDF 文档添加自定义文本
python·pdf
EatFan2 小时前
一个二维码背后的系统设计:批次生成、绑定、扫码与数据统计怎么做?
java·后端·微信小程序·二维码·qrcode
石小石Orz2 小时前
民间AI排行榜单新鲜出炉,Fable 5.1仅排第三
前端·后端·ai编程
小灰灰搞电子2 小时前
Rust Once 、OnceLock、LazyLock 一次性初始化详解
开发语言·后端·rust
m0_547486663 小时前
《Python数据分析与可视化项目教程》全套PPT课件2026
python·数据分析·数据可视化
hqyjzsb3 小时前
规划工商管理大学成长:搭建四层能力体系,重视高阶的 AI 能力建设
开发语言·人工智能·python·microsoft·职场和发展·数据挖掘·业界资讯
我不会起名字3223 小时前
一天一道算法题(35):电话号码的字母组合
java·数据结构·后端·python·leetcode·go·回溯
冯一川3 小时前
DeepSeek在Windows系统上部署
windows·python