如何使用Openpyxl访问Onedrive上的Excel文件

1tuwyuhd  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(216)

我想用Openpyxl(Python)打开一个Excel文件(在Onedrive上)。我在尝试此操作时收到错误:

from openpyxl import load_workbook

file = r"https://d.docs.live.net/dd10xxxxxxxxxx"
wb = load_workbook(filename = file)
self.fp = io.open(file, filemode)

OSError: [Errno 22] Invalid argument: 'https://d.docs.live.net/dd10...

ergxz8rk

ergxz8rk1#

OpenPyXL不能通过http读写文件。它需要一个传统文件系统上的文件,无论是本地文件系统还是网络共享文件系统等等。
如果您使用的是OneDrive For Business,则可以尝试mapping it to a drive letter,或者研究Google Sheets和gspread库的使用情况。

roejwanj

roejwanj2#

如果不需要验证,从Onedrive复制共享URL并转换为直接下载URL,然后请求直接URL作为Openpyxl可以上传的字节文件。
示例onedrive url来自我的本地驱动器,只是为了清楚起见。

注意转换函数是Joe T从OneDrive as Data Storage for Python Project复制而来。桑塔纳瓦尼奇

import base64
import io
import urllib.request
from openpyxl import load_workbook

def create_onedrive_directdownload(onedrive_link):
    data_bytes64 = base64.b64encode(bytes(onedrive_link, 'utf-8'))
    data_bytes64_String = data_bytes64.decode('utf-8').replace('/', '_').replace('+', '-').rstrip("=")
    resultUrl = f"https://api.onedrive.com/v1.0/shares/u!{data_bytes64_String}/root/content"
    return resultUrl

### Original link copied from the file in onedrive
onedrive_link = "https://1drv.ms/x/s!AoNMV-zn1OSxhANyuaBK4RQiKmDb?e=tZ2mrv"
### Converted Onedrive link
onedrive_direct_link = create_onedrive_directdownload(onedrive_link)
### Retrieve url as bytes file
file = urllib.request.urlopen(onedrive_direct_link).read()

### Load file into Openpyxl
wb = load_workbook(filename=io.BytesIO(file))
ws = wb['Sheet1']

print(f"Value in Cell A1: '{ws['A1'].value}'")
1l5u6lss

1l5u6lss3#

另一种方法是使用谷歌驱动器,而不是一个驱动器,然后打开谷歌colab,挂载谷歌驱动器,并打开文件从谷歌驱动器。

from google.colab import drive
drive.mount('/content/gdrive/')

相关问题