无需下载文件即可从谷歌驱动器读取excel文件

问题描述 投票:0回答:2

我想从谷歌驱动器上的 excel 文件中读取 excel 表,而无需在本地机器上下载!我搜索了 google drive api 但找不到解决方案我尝试了以下代码请需要建议:

''' from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive import pandas as pd gauth = GoogleAuth() gauth.LocalWebserverAuth() drive = GoogleDrive(gauth) file_id = 'abc' file_name = 'abc.xlsx' downloaded = drive.CreateFile({'id': file_id}) downloaded.GetContentFile(file_name) class TestCase: def __init__(self, file_name, sheet): self.file_name = file_name self.sheet = sheet testcase = pd.read_excel(file_name, usecols=None, sheet_name=sheet) print(testcase) class TestCaseSteps: def __init__(self, file_name, sheet): self.file_name = file_name self.sheet = sheet testcase = pd.read_excel(file_name, usecols=None, sheet_name=sheet) print(testcase)
testcases = TestCase(文件名, 'A')
步骤 = TestCaseSteps(文件名,'B')
'''

python excel google-drive-api
2个回答
5
投票
我相信你的目标和情况如下。

    您想使用
  • pd.read_excel
     阅读从 Google 云端硬盘下载的 XLSX。
  • 您想在不将下载的 XLSX 数据保存为文件的情况下实现此目的。
  • 您的
  • gauth = GoogleAuth()
     可用于下载 XLSX 格式的 Google 电子表格。
在这种情况下,我想提出以下流程。

    下载 XLSX 格式的 Google 电子表格。
    • 在这种情况下,它直接请求端点使用
    • requests
       库将电子表格导出为 XLSX 格式。
    • 访问令牌是从
    • gauth = GoogleAuth()
      中检索到的。
  1. 下载的XLSX数据用
  2. pd.read_excel
    读取。
    
      在这种情况下,
    • BytesIO
      用于读取数据。
通过此流程,当将电子表格下载为XLSX数据时,无需将XLSX数据另存为文件即可读取。当上面的流程反映到脚本中时,它变成如下。

示例脚本:

在运行脚本之前,请设置电子表格ID。

from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive import pandas as pd import requests from io import BytesIO spreadsheetId = "###" # <--- Please set the Spreadsheet ID. # 1. Download the Google Spreadsheet as XLSX format. gauth = GoogleAuth() gauth.LocalWebserverAuth() url = "https://www.googleapis.com/drive/v3/files/" + spreadsheetId + "/export?mimeType=application%2Fvnd.openxmlformats-officedocument.spreadsheetml.sheet" res = requests.get(url, headers={"Authorization": "Bearer " + gauth.attr['credentials'].access_token}) # 2. The downloaded XLSX data is read with `pd.read_excel`. sheet = "Sheet1" values = pd.read_excel(BytesIO(res.content), usecols=None, sheet_name=sheet) print(values)
参考资料:

  • 下载 Google Workspace 文档
  • pandas.read_excel
新增:

在下面的示例脚本中,假设将 XLSX 文件放入 Google Drive,并下载 XLSX 文件。

from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive import pandas as pd import requests from io import BytesIO file_id = "###" # <--- Please set the file ID of XLSX file. # 1. Download the XLSX data. gauth = GoogleAuth() gauth.LocalWebserverAuth() url = "https://www.googleapis.com/drive/v3/files/" + file_id + "?alt=media" res = requests.get(url, headers={"Authorization": "Bearer " + gauth.attr['credentials'].access_token}) # 2. The downloaded XLSX data is read with `pd.read_excel`. sheet = "Sheet1" values = pd.read_excel(BytesIO(res.content), usecols=None, sheet_name=sheet) print(values)
    

0
投票
获取 Excel 文件的链接。 将

"/edit?usp=share_link" 替换为 "export?format=xlsx"

import pandas as pd url = "https://docs.google.com/spreadsheets/d/1py9cdXWCorKrRz7fUp0doPaOTJ2tiexB/edit?usp=share_link&ouid=107751642562197088720&rtpof=true&sd=true" url_for_pandas = url.replace("/edit?usp=share_link", "/export?format=xlsx") df = pd.read_excel(url_for_pandas) print(df)
    
© www.soinside.com 2019 - 2024. All rights reserved.