使用Spire.XLSforPython库,无需安装Office即可批量导出Excel中的图表和形状为图片。通过SaveChartAsImage导出普通图表或图表工作表,通过SaveToImage导出形状。注意区分图表类型,并用workbook.Dispose()释放资源。
在处理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程序,很适合集成到自动化脚本或者服务端应用里。实际用的时候,根据图表类型(普通工作表图表还是图表工作表)选对方法,再注意一下资源释放,基本就能跑得很顺畅。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述