使用Spire.XLSforPython库,无需安装Office即可批量导出Excel中的图表和形状为图片。通过SaveChartAsImage导出普通图表或图表工作表,通过SaveToImage导出形状。注意区分图表类型,并用workbook.Dispose()释放资源。
Python一键导出Excel图表和形状为图片
时间:2026-07-21
浏览:523
文章目录
在处理Excel文件时,经常需要把里面的图表和形状单独提取出来,做成图片文件——比如放到PPT里、挂在网页上,或者拿去做进一步的可视化分析。手动一个个导出,碰上大批量文件就够呛了。这里介绍一个用Python来搞定这件事的方法,依赖的是Spire.XLS for Python这个库,代码量不大,而且能跑在服务器或者没有图形界面的Linux环境里——因为它不需要本地安装Office。

先提醒一句:这个库的特点是独立于Office运行,所以部署起来很省心。
环境配置
先得把环境搭好,装个库:
复制代码pip install Spire.XLS
如果打算用免费版,对应的包名是 spire.xls.free。装好之后,直接在脚本里引用模块就行。
导出工作表中的图表为图片
工作表里嵌入的图表,用 Workbook.Sa veChartAsImage() 方法就能拿到图片流。这个方法很灵活,可以导出单个图表,也能一次导出所有图表。
下面这个例子,是把第一个工作表里的所有图表都存成PNG格式:
复制代码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.Sa veChartAsImage(sheet, i)
image.Sa ve(f"图表_{i}.png")workbook.Dispose()
如果只想导出某一个图表,在 Sa veChartAsImage 里指定索引就行,索引从0开始。
导出图表工作表中的图表
Excel里还有一种特殊的工作表类型——图表工作表(Chart Sheet),整个页面就显示一个图表,没有单元格数据。这种类型导出时不能用上面那个方法,得换一个:
复制代码from spire.xls import Workbookworkbook = Workbook()
workbook.LoadFromFile("示例.xlsx")# 获取第一个图表工作表
chart_sheet = workbook.Chartsheets[0]# 将图表工作表导出为图片
image = workbook.Sa veChartAsImage(chart_sheet)
image.Sa ve("图表工作表.png")workbook.Dispose()
导出工作表中的形状为图片
除了图表,Excel里还可能有文本框、几何形状、组合框之类的。这些形状可以通过 Worksheet.PrstGeomShapes 属性拿到,然后用 XlsShape.Sa veToImage() 导出为图片。
复制代码from spire.xls import Workbook, XlsShapeworkbook = Workbook()
workbook.LoadFromFile("示例.xlsx")sheet = workbook.Worksheets[0]# 遍历所有预设几何形状
for i, shape in enumerate(sheet.PrstGeomShapes):
# 将形状转换为 XlsShape 对象
xls_shape = XlsShape(shape)
image = xls_shape.Sa veToImage()
image.Sa ve(f"形状_{i}.png")workbook.Dispose()
对于文本框、复选框等其他类型,对应使用 Worksheet.TextBoxes、Worksheet.CheckBoxes 等属性获取,同样调用 Sa veToImage() 方法就能导出。
注意事项
- 图表与图表工作表的区别:
Workbook.Sa veChartAsImage(worksheet, index)处理的是普通工作表中嵌入的图表,而图表工作表必须用Workbook.Sa veChartAsImage(chartsheet)这个重载。搞混了会报类型错误,或者导不出东西。 - 资源释放:操作完记得调用
workbook.Dispose(),避免文件句柄和内存一直占着,特别是批量处理的时候。 - 授权说明:免费版可以用于开发测试,但某些功能或者文件规模可能有限制。项目集成前最好翻一下授权条款,看看是否满足需求。
总结
用 Spire.XLS for Python 提供的 Sa veChartAsImage 和 Sa veToImage 方法,可以比较简洁地实现Excel中图表和形状的批量导出。这套方案不依赖本地Excel程序,很适合集成到自动化脚本或者服务端应用里。实际用的时候,根据图表类型(普通工作表图表还是图表工作表)选对方法,再注意一下资源释放,基本就能跑得很顺畅。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。