使用 Python 在 OneDrive 文件夹中打开 excel 工作簿

Posted

技术标签:

【中文标题】使用 Python 在 OneDrive 文件夹中打开 excel 工作簿【英文标题】:Open excel workbook in OneDrive folder using Python 【发布时间】:2021-01-03 20:23:18 【问题描述】:

我正在尝试使用 pandas.read_excel 从 Excel 工作簿中读取数据。但是,如果工作簿存储在 OneDrive 文件夹中并同步到 OneDrive,则在已打开时无法读取。它报告错误消息

[Errno 13] 权限被拒绝:'C:\Users\Name\OneDrive\Test\Test.xlsx'

尝试打开文件时似乎失败

with open(filename, "rb") as f:

但是当我关闭工作簿时,pandas.read_excel 成功从中获取数据。并且不在 OneDrive 文件夹中的文件无论打开与否都可以随时访问。请看以下案例:

pd.read_excel(r'C:\Users\Name\Test\Book1.xlsx') # successful when book is open pd.read_excel(r'C:\Users\Name\Test\Book1.xlsx') # successful when book is closed pd.read_excel(r'C:\Users\Name\OneDrive\Book1.xlsx') # failed when book is open pd.read_excel(r'C:\Users\Name\OneDrive\Book1.xlsx') # successful when book is closed

我想知道它是否与 OneDrive 有关?有什么方法可以从存储在 OneDrive 文件夹中的打开的工作簿中读取数据?由于我也想从关闭的工作簿中读取数据,xlwings 应该不是一个好主意,是否有一种通用技术可以用来从所有 excel 工作簿中读取数据,无论是否打开,无论是否在 OneDrive 中?

【问题讨论】:

您始终可以在文件关闭时读取文件,但有时只能在文件打开时读取。是否可以简单地将其关闭? 或者你可以先下载excel文件,然后用python操作它 问题在于 OneDrive 的工作方式。请记住,OneDrive 正在尝试将打开的文件同步到云端。所以我的“猜测”是,PermissionError 结果来自 OneDrive 的访问权限。 【参考方案1】:

我通过简单地关闭 excel 中的自动保存功能就成功了。

编辑:这似乎只适用于较旧的 .xls 文件,而不适用于 .xlsx

【讨论】:

以上是关于使用 Python 在 OneDrive 文件夹中打开 excel 工作簿的主要内容,如果未能解决你的问题,请参考以下文章

使用 Ms Graph Api 将附件文件从 Outlook 复制到 onedrive,无需下载

Onedrive同步其它盘文件夹

Onedrive同步其它盘文件夹

OneDrive 同步任意文件夹方法

OneDrive不断创建新文件的副本

在 Onedrive 文件夹中安装 laravel 时权限不足