如何用R脚本将Power BI导出的Excel文件保存至SharePoint?
直接输入SharePoint的HTTP地址无效,因为writexl这类本地文件操作工具只识别本地文件系统路径或已映射的网络驱动器路径,不支持HTTP/HTTPS URL。以下是两种可行方案:
方案1:映射SharePoint文档库为本地驱动器(适合新手)
这是最简便的方式,把SharePoint库映射成电脑的网络驱动器,之后就能像操作本地文件夹一样使用:
- 打开目标SharePoint文档库,点击顶部的同步按钮,按提示完成同步(文件资源管理器会生成带盘符的路径);
- 或手动映射网络驱动器:右键“此电脑”→“映射网络驱动器”,输入SharePoint库的网络路径(格式类似
\\your-tenant.sharepoint.com@SSL\DavWWWRoot\sites\你的站点名\文档库名)完成映射。
修改后的R脚本示例:
# 'dataset' holds the input data for this script install.packages("writexl") library("writexl") # 替换为映射后的驱动器路径 write_xlsx(dataset, "Z:/Test Folder/data_export.xlsx")
方案2:通过R直接上传到SharePoint API(无需映射)
如果不想映射驱动器,可以借助httr包调用SharePoint REST API上传文件,步骤如下:
- 先将数据保存到本地临时文件;
- 获取SharePoint访问令牌(需你的账号权限);
- 调用API上传临时文件到目标路径。
示例脚本(替换占位信息为你的实际内容):
# 'dataset' holds the input data for this script install.packages(c("writexl", "httr", "AzureAuth")) library("writexl") library("httr") library("AzureAuth") # 1. 保存数据到本地临时文件 temp_file <- tempfile(fileext = ".xlsx") write_xlsx(dataset, temp_file) # 2. 配置SharePoint信息 tenant_name <- "你的租户名" site_url <- "https://your-tenant.sharepoint.com/sites/你的站点名" library_name <- "文档库名" target_folder <- "Test Folder" file_name <- "data_export.xlsx" # 3. 获取访问令牌(首次运行会弹出微软账号登录窗口) token <- get_azure_token( resource = "https://your-tenant.sharepoint.com", tenant = tenant_name, app = "d3590ed6-52b3-4102-aeff-aad2292ab01c", # 微软官方Power BI应用ID version = 2 ) # 4. 上传文件到SharePoint upload_endpoint <- paste0( site_url, "/_api/web/GetFolderByServerRelativeUrl('", library_name, "/", target_folder, "')/Files/add(url='", file_name, "', overwrite=true)" ) POST( url = upload_endpoint, add_headers( Authorization = paste("Bearer", token$credentials$access_token), `Content-Type` = "application/octet-stream" ), body = upload_file(temp_file) ) # 清理临时文件 file.remove(temp_file)
注意:如果是企业环境,可能需要IT协助配置应用权限,确保账号有SharePoint文档库的上传权限。
内容的提问来源于stack exchange,提问作者BooksLM
相关产品推荐
相关产品推荐

