Python使用Spire.XLS操作Excel图表(提取数据、调整尺寸、移动与删除)

Alice
Alice
发布时间:2026-10-10 | 4人浏览过
原创

本文介绍如何使用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 属性,可直接锁定绘图所用的单元格区域,进而逐行读取底层数值。

  1. 入口:初始化 Workbook 实例。
  2. 动作:LoadFromFile() 载入目标文档。
  3. 定位:Worksheets[0] 获取含图表的工作表,再经 Charts[0] 获取目标图表对象。
  4. 参数读取: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()
控制台打印出从Excel图表数据源中提取的单元格数值列表
执行脚本后在终端输出的原始数据网格,验证提取范围是否完整覆盖图表引用区。

第2步:调整图表尺寸避免遮挡信息

图表面积过大可能遮盖表格摘要,过小则导致数据标签模糊。通过直接赋值 Width 与 Height 可统一规范版面。

  1. 入口:同上获取 chart 对象。
  2. 动作:为 chart.Width 与 chart.Height 分配目标像素或单位值(如 450 与 300)。
  3. 保存: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()
修改尺寸后在Excel中显示的紧凑图表
调整后占据的单元格区域明显缩小,原本被遮盖的表头数据已完全露出。

第3步:精准移动图表恢复版面布局

模板生成的固定报告常出现图表错位。借助 LeftColumn、TopRow、RightColumn 和 BottomRow 属性,可将图表强制锚定到指定行列交叉区域。

  1. 入口:定位目标图表对象。
  2. 参数设置:LeftColumn=1、TopRow=8、RightColumn=8、BottomRow=24(数值对应实际单元格格线位置)。
  3. 保存:覆写输出或另存为新文件。
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()
图表按指定行列坐标移动至页面下方的效果
图表已脱离原空白区域,严格对齐第8行至第24行的新锚点。

第4步:批量删除冗余图表精简文件

历史迭代积累的废弃图表会持续占用内存并拖慢打开速度。调用 Remove() 方法可安全释放对应绘图对象。

  1. 入口:遍历需清理的图表索引。
  2. 动作:chart.Remove() 解除绑定并从工作表集合中移除。
  3. 保存: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图表的详细流程,更多关于自动化处理电子表格的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表