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

Windows下用Pandas读取已打开Excel,如何避免权限拒绝错误?

解决Windows下Pandas读取已打开Excel文件的权限拒绝问题

针对你遇到的Excel文件被锁定导致无法读取/复制的问题,以下是几个实用的解决方案:

1. 开启Excel的共享工作簿功能

这是最直接的方法,允许Excel保持打开状态时其他程序(包括你的脚本)访问文件:

  • 打开目标Excel文件,点击「文件」→「选项」→「信任中心」→「信任中心设置」→「受保护的视图」,取消勾选所有受保护视图选项(避免后续权限冲突)。
  • 回到Excel主界面,点击「审阅」→「共享工作簿」,勾选「允许多用户同时编辑,同时允许工作簿合并」,点击「确定」后保存文件。
    之后即使Excel处于打开状态,pandas的read_excel也能正常读取文件。

2. 使用openpyxl只读模式读取

pandas配合openpyxl引擎的只读模式,可以绕过Excel的文件锁定:

  • 先安装openpyxl:pip install openpyxl
  • 修改读取代码:
import pandas as pd
df = pd.read_excel("your_file.xlsx", engine="openpyxl", read_only=True)

这个模式下openpyxl会以只读方式打开文件,不会触发Excel的独占锁,也不需要关闭Excel。

3. 读取Excel自动生成的临时文件

Windows下开启自动保存后,Excel会在后台生成临时文件(格式为~$your_file.xlsx),你可以直接读取这个临时文件:

  • 临时文件默认路径:C:\Users\<你的用户名>\AppData\Roaming\Microsoft\Excel\
  • 代码示例(自动定位临时文件):
import pandas as pd
import glob
import os

# 替换为你的Excel文件名
original_file = "your_file.xlsx"
temp_file_pattern = os.path.join(os.environ["APPDATA"], "Microsoft", "Excel", f"~${original_file}")
temp_files = glob.glob(temp_file_pattern)

if temp_files:
    df = pd.read_excel(temp_files[0], engine="openpyxl")
else:
    # 临时文件不存在时读取原文件
    df = pd.read_excel(original_file)

注意:临时文件是Excel实时备份的副本,内容和原文件一致,但文件名带~$前缀。

4. 改用CSV格式中转

如果你的数据不需要保留复杂Excel格式,可以每次修改后将Excel另存为CSV:

  • Excel中点击「文件」→「另存为」,选择CSV格式保存。
  • pandas读取CSV文件不会有锁定问题:
df = pd.read_csv("your_file.csv")

这个方法最稳定,适合数据结构简单的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:59:50