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

如何为SSIS配置OData源连接以获取SharePoint文档?

SSIS从SharePoint文档库获取Excel文件的解决方案

问题分析

OData源仅适用于访问SharePoint列表数据(以XML/JSON格式暴露),无法直接解析文档库中存储的Excel二进制文件,因此需要换用以下方法:


方法一:脚本任务+SharePoint CSOM下载文件到本地

通过C#脚本调用SharePoint Online CSOM库,将目标Excel文件下载到本地临时路径,再用Excel源组件处理:

  1. 在SSIS包中添加脚本任务,选择C#作为脚本语言。
  2. 在脚本项目中安装NuGet包Microsoft.SharePointOnline.CSOM(用于SharePoint认证和文件操作)。
  3. 替换以下示例代码中的参数,实现文件下载:
using Microsoft.SharePoint.Client;
using System.IO;
using System.Security;

public void Main()
{
    // 配置参数
    string siteUrl = "https://jeffersonkyschools.sharepoint.com/sites/CTE";
    string libraryName = "REPORTS";
    string[] targetFiles = { "Current Pathways.xlsx", "Prior Pathways.xlsx" };
    string localTempPath = @"C:\SSIS_Temp_Files\"; // 自定义本地临时路径

    // 创建本地目录(如果不存在)
    if (!Directory.Exists(localTempPath))
    {
        Directory.CreateDirectory(localTempPath);
    }

    // 构建SharePoint认证凭据
    SecureString securePwd = new SecureString();
    foreach (char c in "你的工作密码".ToCharArray())
    {
        securePwd.AppendChar(c);
    }
    ClientContext spContext = new ClientContext(siteUrl);
    spContext.Credentials = new SharePointOnlineCredentials("你的工作邮箱", securePwd);

    // 循环下载目标文件
    foreach (string fileName in targetFiles)
    {
        string fileRelativeUrl = $"/sites/CTE/{libraryName}/{fileName}";
        File spFile = spContext.Web.GetFileByServerRelativeUrl(fileRelativeUrl);
        spContext.Load(spFile);
        spContext.ExecuteQuery();

        // 将文件写入本地
        using (FileStream localStream = new FileStream(Path.Combine(localTempPath, fileName), FileMode.Create))
        {
            spFile.OpenBinaryStream().Value.CopyTo(localStream);
        }
    }

    Dts.TaskResult = (int)ScriptResults.Success;
}
  1. 下载完成后,添加Excel源组件,连接本地临时路径的Excel文件,进行后续数据处理。

方法二:Power Query源直接读取SharePoint Excel文件

利用SSIS的Power Query源组件,直接连接SharePoint文档库并读取Excel内容:

  1. 在SSIS包中添加Power Query源组件,双击打开编辑器。
  2. 点击"新建",选择从其他源 -> SharePoint Online列表,输入站点URL:https://jeffersonkyschools.sharepoint.com/sites/CTE。
  3. 选择"Microsoft Online Services"认证方式,输入工作邮箱和密码,点击连接。
  4. 在导航器中选择REPORTS文档库,找到目标Excel文件,点击"加载到编辑器"。
  5. 在Power Query编辑器中,点击文件行的"内容"列右侧的展开按钮,选择要加载的Excel工作表,完成数据预览后关闭编辑器。
  6. 配置Power Query源的输出列,即可将Excel数据传递给后续SSIS组件。

方法三:HTTP连接管理器+脚本任务下载文件

如果无法使用CSOM库,可通过SharePoint REST API结合HTTP连接管理器实现文件下载:

  1. 添加HTTP连接管理器,配置如下:
    • 服务器URL:https://jeffersonkyschools.sharepoint.com/sites/CTE/_api/web/GetFileByServerRelativeUrl('/sites/CTE/REPORTS/Current Pathways.xlsx')/$value
    • 身份验证类型:Microsoft Online Services,输入工作邮箱和密码。
  2. 添加脚本任务,编写代码调用HTTP连接管理器下载文件:
using System.Net.Http;
using System.IO;

public void Main()
{
    string localSavePath = @"C:\SSIS_Temp_Files\Current Pathways.xlsx";
    var httpConn = Dts.Connections["HTTP_SharePoint_Current"]; // 替换为你的HTTP连接管理器名称
    var handler = httpConn.AcquireConnection(null) as HttpClientHandler;

    using (HttpClient client = new HttpClient(handler))
    {
        byte[] fileBytes = client.GetByteArrayAsync(httpConn.ConnectionString).Result;
        File.WriteAllBytes(localSavePath, fileBytes);
    }

    // 重复上述逻辑处理Prior Pathways.xlsx
    Dts.TaskResult = (int)ScriptResults.Success;
}
  1. 后续同样使用Excel源组件处理本地文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 17:10:18