27

我想将 excel 文件直接从 ftp 站点加载到内存流中。然后我想使用 OpenExcel(Stream) 方法在 FarPoint Spread 控件中打开文件。我的问题是我不确定是否可以将文件直接下载到内存中。有谁知道这是否可能?

4

3 回答 3

40

是的,您可以将文件从 FTP 下载到内存。

我认为您甚至可以将来自 FTP 服务器的 Stream 传递给 FarPoint 进行处理。

WebRequest request = FtpWebRequest.Create("ftp://asd.com/file");

using (WebResponse response = request.GetResponse())
{
    Stream responseStream = response.GetResponseStream();
    OpenExcel(responseStream);
}

使用 WebClient 你几乎可以做同样的事情。通常使用 WebClient 更容易,但为您提供更少的配置选项和控制(例如:无超时设置)。

WebClient wc = new WebClient();
using (MemoryStream stream = new MemoryStream(wc.DownloadData("ftp://asd.com/file")))
{
    OpenExcel(stream);
}
于 2013-10-30T15:16:19.640 回答
24

看看WebClient.DownloadData。您应该能够将文件目录下载到内存而不是先将其写入文件。

这是未经测试的,但类似于:

var spreadSheetStream
    = new MemoryStream(new WebClient().DownloadData(yourFilePath));

不过,我对 FarPoint 不熟悉,要说流是否可以直接与该OpenExcel方法一起使用。在线示例显示了与 a 一起使用的方法FileStream,但我认为任何类型的Stream都可以接受。

于 2013-10-30T15:22:37.073 回答
0

将文件从 URL 下载到内存。 我的回答并未完全显示如何下载文件以在 Excel 中使用,而是显示了如何创建通用的内存字节数组。

    private static byte[] DownloadFile(string url)
    {
        byte[] result = null;

        using (WebClient webClient = new WebClient())
        {
            result = webClient.DownloadData(url);
        }

        return result;
    }
于 2018-05-02T05:37:25.663 回答