Python使用Spire.XLS操作Excel图表(提取数据、调整尺寸、移动与删除)
本文介绍如何使用Python的Spire.XLS库高效处理Excel图表。通过加载工作簿获取图表对象,利用DataRange属性自动提取隐藏的数据源范围;结合Width与Height属性批量修正遮挡或过小的图表尺寸;通过LeftColumn等定位参数精准重置图表布局;并使用Remove方法一键清理冗余图表。无需依赖本地Office软件即可实现自动化模板维护与报告优化。
准备环境与安装依赖
本方案基于 Spire.XLS for Python 库实现。该组件以纯代码方式提供 Excel 文件读写能力,调用过程不依赖 Microsoft Excel 或 WPS 等外部桌面软件,适合服务器端或自动化流水线运行。
在 Windows 环境中可通过 pip 直接安装:
pip install spire.xls
也可下载离线包,解压后定位至 lib 文件夹内的 .whl 文件进行本地安装。安装完成后即可在脚本中引入核心模块。
第1步:提取图表绑定的数据源
当原始数据分散于多张工作表时,手动核对图表数据费时易错。通过读取图表的 DataRange 属性,可直接锁定绘图所用的单元格区域,进而逐行读取底层数值。
- 入口:初始化
Workbook实例。 - 动作:
LoadFromFile()载入目标文档。 - 定位:
Worksheets[0]获取含图表的工作表,再经Charts[0]获取目标图表对象。 - 参数读取:
chart.DataRange返回CellRange,遍历其Rows与Columns索引即可输出每个单元格值。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Microsoft Excel 工作表.xlsx")
sheet = workbook.Worksheets[0]
chart = sheet.Charts[0]
cellRange = chart.DataRange
for i in range(len(cellRange.Rows)):
for j in range(len(cellRange.Rows[i].Columns)):
print(cellRange[i + 1, j + 1].Value + " ", end='')
print("")
workbook.Dispose()

第2步:调整图表尺寸避免遮挡信息
图表面积过大可能遮盖表格摘要,过小则导致数据标签模糊。通过直接赋值 Width 与 Height 可统一规范版面。
- 入口:同上获取
chart对象。 - 动作:为
chart.Width与chart.Height分配目标像素或单位值(如450与300)。 - 保存:
SaveToFile()写入新版本档,指定ExcelVersion.Version2016确保兼容性。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Microsoft Excel 工作表.xlsx")
sheet = workbook.Worksheets[0]
chart = sheet.Charts[0]
chart.Width = 450
chart.Height = 300
workbook.SaveToFile("调整图表大小.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

第3步:精准移动图表恢复版面布局
模板生成的固定报告常出现图表错位。借助 LeftColumn、TopRow、RightColumn 和 BottomRow 属性,可将图表强制锚定到指定行列交叉区域。
- 入口:定位目标图表对象。
- 参数设置:
LeftColumn=1、TopRow=8、RightColumn=8、BottomRow=24(数值对应实际单元格格线位置)。 - 保存:覆写输出或另存为新文件。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Microsoft Excel 工作表.xlsx")
sheet = workbook.Worksheets[0]
chart = sheet.Charts[0]
chart.LeftColumn = 1
chart.TopRow = 8
chart.RightColumn = 8
chart.BottomRow = 24
workbook.SaveToFile("移动图表.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

第4步:批量删除冗余图表精简文件
历史迭代积累的废弃图表会持续占用内存并拖慢打开速度。调用 Remove() 方法可安全释放对应绘图对象。
- 入口:遍历需清理的图表索引。
- 动作:
chart.Remove()解除绑定并从工作表集合中移除。 - 保存:
SaveToFile()提交更改。
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("Microsoft Excel 工作表.xlsx")
sheet = workbook.Worksheets[0]
chart = sheet.Charts[0]
chart.Remove()
workbook.SaveToFile("删除图表.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

完成状态判断与维护建议
脚本运行结束且未抛出异常即代表操作成功。打开生成的 .xlsx 文件,逐项核对数据源是否已正确读出、图表尺寸是否贴合预期排版、位置是否避开关键指标区域,以及无关图形是否已被彻底清除。对于涉及大规模模板更新的场景,建议在首次批量执行前对原文件进行一次备份,防止不可逆的版面重排影响后续归档。
总结
通过上述步骤,可系统性地解决 Excel 图表数据溯源困难、版面拥挤错位及历史文件臃肿等常见痛点。掌握 Spire.XLS for Python 的对象链调用逻辑,能够大幅降低人工拖拽与反复校对的成本,让精力回归业务分析本身。以上就是使用Python操作Excel图表的详细流程,更多关于自动化处理电子表格的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













