You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

xlwings读取Excel数据异常:程序卡顿内存占用过高求助

问题排查与解决方案

1. 冗余的范围获取逻辑拖慢效率

你当前代码中通过tbl.range.address再转换为xlwings range的步骤完全多余,不仅增加了COM对象与xlwings对象的交互开销,还可能意外获取到远超表格实际大小的范围(比如误包含大量空白单元格),导致不必要的数据加载。

2. 直接调用Excel COM对象的额外开销

使用ws.api.ListObjects(1)直接操作底层Excel COM对象,比xlwings封装好的原生方法效率低很多,频繁的跨层级交互会累积延迟,甚至触发资源占用异常。

3. OneDrive实时同步的干扰

文件存储在OneDrive目录下,Excel打开状态下OneDrive的后台同步可能与xlwings的读写操作产生冲突,引发锁等待或资源占用飙升。


优化后的代码

import xlwings as xw
import pandas as pd

xlsfile = r'C:\Users\matth\OneDrive\Dokumente\20241023-1904097928-umsatz.xlsx'
workbook = xw.Book(xlsfile)
ws = workbook.sheets[4]
# 使用xlwings原生tables属性获取表格(索引从0开始,对应原代码的ListObjects(1))
tbl = ws.tables[0]
# 直接通过表格的range加载DataFrame
df = tbl.range.options(pd.DataFrame, header=True).value

额外建议

  • 暂时关闭OneDrive实时同步,或把文件复制到本地非同步目录测试,排除同步干扰。
  • 若Excel仍冻结,先关闭所有Excel进程再重新运行代码,避免残留COM对象占用资源。

内容的提问来源于stack exchange,提问作者Matthias Pospiech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 19:14:54