首页 > 解决方案 > 如何从共享点服务器下载 excel 文件?

问题描述

我有一个项目(c# 控制台应用程序),我想通过 URL 自动下载一个带有登录凭据的 excel 文件。

我一直在使用网络客户端自动下载文件,我收到的只是一个 html 页面作为响应,通知我登录该站点(我已经在 Chrome 中运行它。)

     private static string url = "[the whole url link to the file, deleted for privacy]";
     public void test()
    {
        const string username = "[mail]";
        const string password = "[password]";

        var securedPassword = new SecureString();
        foreach (var c in password.ToCharArray())
        {
            securedPassword.AppendChar(c);
        }

        var credentials = new SharePointOnlineCredentials(username, securedPassword);

        DownloadFile(url, credentials, @"C:\Documents\ExcelFilesSinc\test.xlsx");
    }


    private static void DownloadFile(string webUrl, ICredentials credentials, string fileRelativeUrl)
    {
        using (var client = new WebClient())
        {
            client.Credentials = credentials;

            string _UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
            client.Headers.Add(HttpRequestHeader.UserAgent, _UserAgent);
            client.DownloadFile(webUrl, fileRelativeUrl);
        }
    }

这样,文件就生成了,但是里面保存的整个内容是一个HTML页面,需要我登录微软。有什么建议么?

标签: c#.netexcelsharepointconsole

解决方案


您可以尝试为基本身份验证添加标头,例如

client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
client.Headers.Add("User-Agent: Other");
client.Credentials = credentials;

另请参阅: 从 SharePoint 365 下载文件


推荐阅读