【问题标题】:Reading Sharepoint Excel data读取 Sharepoint Excel 数据
【发布时间】:2021-09-23 15:08:57
【问题描述】:

我需要阅读 SharePoint Excel 文件并获取所需数据。现在我正在做的是在我的本地机器上下载 Excel 文件然后阅读它。但是我想摆脱下载部分,而是直接读取共享点上的Excel文件并获取所需的数据。

我当前的代码:

public string Get(int CSI_ID)
    {
        const string username = "********";
        const string password = "********";
        string url = @"https://globalfunctionsshare.nam.citi.net/";
        var securedPassword = new SecureString();
        foreach (var c in password.ToCharArray()) securedPassword.AppendChar(c);
        NetworkCredential credentials = new NetworkCredential(username, password, "eur");
        var path = @"sites/otdrrm/_layouts/15/download.aspx?SourceUrl=%2Fsites%2Fotdrrm%2FDocuments%2Ftools%2FLegal%20Hold%20Application%20Tracker/Legal%20Hold%20Application%20Tracker%2020210702.xlsx";
        DownloadFile(url, credentials, path);

        DataTable dt = ImportExceltoDatatable(@"C:\Users\mk20317\Legal_Hold_Application_Tracker.xlsx", CSI_ID);
        string Status = dt.Rows[0]["Preservation Status"].ToString();
        return Status;
    }
    private static void DownloadFile(string webUrl, ICredentials credentials, string fileRelativeUrl)
    {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

        using (var client = new System.Net.WebClient())            
        {
            client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
            client.Headers.Add("User-Agent: Other");
            //client.Credentials = credentials;
            client.Credentials = CredentialCache.DefaultCredentials;
            client.DownloadFile(new Uri(webUrl + fileRelativeUrl), @"C:\Users\mk20317\Legal_Hold_Application_Tracker.xlsx");                
            //var data = client.DownloadString(webUrl + fileRelativeUrl);
            //JObject table = JObject.Parse(data);
        }
    }

    public DataTable ImportExceltoDatatable(string Filepath, int CSI_ID)
    {
        // string sqlquery= "Select * From [SheetName$] Where YourCondition";
        string sqlquery = "Select [Preservation Status] From [App List$] Where [CSI ID]=" + CSI_ID;
        DataSet ds = new DataSet();
        string constring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Filepath + ";Extended Properties=\"Excel 12.0;HDR=YES;\"";
        OleDbConnection con = new OleDbConnection(constring + "");
        OleDbDataAdapter da = new OleDbDataAdapter(sqlquery, con);
        da.Fill(ds);
        DataTable dt = ds.Tables[0];
        return dt;
    }

虽然我可以使用此代码在这里实现我的要求,但是通过不下载它并直接从共享点读取 excel (例如将数据放入内存流然后读取它)可以更简单。 请如果有人可以建议或帮助将数据放入内存流然后从中读取。

【问题讨论】:

    标签: c# asp.net asp.net-web-api sharepoint


    【解决方案1】:

    您可以继续使用 Sarepoint 并在连接到 Sharepoint 的计算机上创建一个驱动器 (OneDrive)。然后你可以简单地在你的代码中使用这个路径。 :-) 另一种方法是在 SharePoint 上获取文件上的 URL(但我认为它也会下载它)。

    【讨论】:

    • 我无法创建任何东西,公司的安全问题。我也不能这样做,因为稍后此代码将在 Windows 服务调用上运行。基本上我正在创建一个 API,我的 url 将从 Windows 服务调用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2018-09-16
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多