使用Python访问Microsoft SharePoint中Excel文件的方法咨询
1. 前置依赖安装
首先安装操作所需的第三方库:
pip install office365-rest-python-client pandas openpyxl
2. 提前准备必要参数
操作前请确认以下信息:
- 公司SharePoint站点地址:格式为
https://<公司域名>.sharepoint.com/sites/<站点名称>,示例:https://contoso.sharepoint.com/sites/sales - 目标文件夹的相对站点路径:即从站点根目录到目标Excel文件夹的路径,示例:
Shared Documents/2024年销售报表 - 有权限访问该站点的企业账号用户名、密码(若账号未开启多因素认证可直接使用,开启MFA请参考后续特殊场景适配方案)
3. 完整实现代码
from office365.sharepoint.client_context import ClientContext from office365.runtime.auth.user_credential import UserCredential import pandas as pd from io import BytesIO # -------------------------- 替换为你自己的参数 -------------------------- SHAREPOINT_SITE_URL = "https://yourcompany.sharepoint.com/sites/your-site" USERNAME = "your-work-email@company.com" PASSWORD = "your-work-account-password" TARGET_FOLDER_PATH = "Shared Documents/target-excel-folder" # ----------------------------------------------------------------------- # 建立SharePoint连接 ctx = ClientContext(SHAREPOINT_SITE_URL).with_credentials(UserCredential(USERNAME, PASSWORD)) # 获取目标文件夹下的所有文件 folder = ctx.web.get_folder_by_server_relative_url(TARGET_FOLDER_PATH) files = folder.files ctx.load(files) ctx.execute_query() # 遍历文件,仅处理Excel格式文件,直接读取为DataFrame无需下载到本地 df_list = [] for file in files: if file.name.endswith(('.xlsx', '.xls')): # 读取文件内容到内存 file_content = file.open_binary(ctx).content # 转换为DataFrame,可根据需求调整sheet_name、header等参数 df = pd.read_excel(BytesIO(file_content), sheet_name=0, engine='openpyxl') # 可选:新增列标记数据来源文件 df['source_file'] = file.name df_list.append(df) # 合并所有Excel数据(无需合并可单独处理df_list内的单个DataFrame) final_df = pd.concat(df_list, ignore_index=True) print(final_df.head())
4. 特殊场景适配
- 账号开启多因素认证(MFA):需先在Azure AD注册应用,授予对应SharePoint站点的访问权限,将认证方式替换为
ClientCredential(client_id, client_secret)即可,后续文件读取逻辑无需修改 - 读取单个指定Excel文件:可跳过文件夹遍历步骤,直接调用
ctx.web.get_file_by_server_relative_url("文件完整相对路径")获取指定文件 - 处理大体积Excel文件:可新增分块读取逻辑,避免内存占用过高
内容的提问来源于stack exchange,提问作者randunu galhena
相关产品推荐
相关产品推荐

