You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过PowerShell直接在SharePoint文件夹创建Excel文档?

直接在SharePoint中通过PowerShell创建Excel文档的方法

当然可行!你完全不用先在本地创建Excel再上传,直接在SharePoint的目标文件夹里生成新文档是可以实现的。下面我给你两种实用方案,你可以根据自己的环境来选择:

方案一:使用PnP PowerShell + EPPlus(推荐,操作更简洁)

这个方案借助PnP PowerShell的文件上传能力,配合EPPlus库在内存中生成Excel内容,直接推送到SharePoint,全程不需要本地保存文件。

步骤:

  1. 先安装所需模块(如果还没装的话):
    Install-Module -Name PnP.PowerShell -Scope CurrentUser
    Install-Module -Name EPPlus -Scope CurrentUser
    
  2. 运行以下脚本创建Excel文档:
    # 导入模块
    Import-Module PnP.PowerShell
    Import-Module EPPlus
    
    # 连接到你的SharePoint站点(会弹出登录窗口)
    Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite" -Interactive
    
    # 定义目标文件夹和文件名
    $targetFolder = "/sites/yoursite/Shared Documents/YourTargetFolder" # 替换成你的文件夹相对路径
    $newFileName = "DirectCreatedExcel.xlsx"
    
    # 在内存中创建Excel文档(可以添加初始内容)
    $memoryStream = New-Object System.IO.MemoryStream
    $excelPackage = New-Object OfficeOpenXml.ExcelPackage($memoryStream)
    $worksheet = $excelPackage.Workbook.Worksheets.Add("Sheet1")
    # 可选:添加表头或测试内容
    $worksheet.Cells["A1"].Value = "序号"
    $worksheet.Cells["B1"].Value = "内容"
    $excelPackage.Save()
    $memoryStream.Position = 0 # 重置流位置到开头
    
    # 直接上传到SharePoint目标文件夹
    Add-PnPFile -Folder $targetFolder -FileName $newFileName -Stream $memoryStream
    
    # 清理资源
    $memoryStream.Dispose()
    $excelPackage.Dispose()
    

方案二:使用SharePoint REST API(无需PnP模块)

如果你不想依赖PnP模块,可以直接调用SharePoint的REST API来实现同样的效果,核心思路还是在内存生成Excel流后通过API上传。

步骤:

  1. 安装EPPlus模块(用于内存生成Excel):
    Install-Module -Name EPPlus -Scope CurrentUser
    
  2. 运行以下脚本:
    Import-Module EPPlus
    
    # 连接站点并获取访问令牌
    Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite" -Interactive
    $accessToken = Get-PnPAccessToken
    
    # 配置参数
    $siteUrl = "https://yourtenant.sharepoint.com/sites/yoursite"
    $folderRelativeUrl = "/sites/yoursite/Shared Documents/YourTargetFolder"
    $newFileName = "RESTCreatedExcel.xlsx"
    
    # 内存中创建Excel
    $memoryStream = New-Object System.IO.MemoryStream
    $excelPackage = New-Object OfficeOpenXml.ExcelPackage($memoryStream)
    $excelPackage.Workbook.Worksheets.Add("Sheet1")
    $excelPackage.Save()
    $memoryStream.Position = 0
    $fileBytes = [byte[]]::new($memoryStream.Length)
    $memoryStream.Read($fileBytes, 0, $memoryStream.Length)
    
    # 发送REST请求上传文件
    $restEndpoint = "$siteUrl/_api/web/getfolderbyserverrelativeurl('$folderRelativeUrl')/files/add(overwrite=true, url='$newFileName')"
    Invoke-RestMethod -Uri $restEndpoint -Headers @{
        "Authorization" = "Bearer $accessToken"
        "Accept" = "application/json;odata=verbose"
    } -Method Post -Body $fileBytes -ContentType "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
    
    # 清理资源
    $memoryStream.Dispose()
    $excelPackage.Dispose()
    

注意事项:

  • 确保你的账号拥有目标SharePoint文件夹的编辑权限,否则会上传失败
  • 如果是SharePoint本地服务器(On-Premises),需要调整认证方式(比如改用-UseWebLogin或者NTLM认证)
  • EPPlus支持PowerShell 5.1和PowerShell 7,兼容性没问题

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:31:45