我想将 excel 文件直接从 ftp 站点加载到内存流中。然后我想使用 OpenExcel(Stream) 方法在 FarPoint Spread 控件中打开文件。我的问题是我不确定是否可以将文件直接下载到内存中。有人知道这是否可能吗?
是的,您可以从 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);
}
看看WebClient.DownloadData。您应该能够将文件目录下载到内存中,而不是先将其写入文件。
这未经测试,但类似于:
var spreadSheetStream
= new MemoryStream(new WebClient().DownloadData(yourFilePath));
我对FarPoint不太熟悉,不知道流是否可以直接与
OpenExcel
方法一起使用。 在线示例显示了与FileStream
一起使用的方法,但我假设任何类型的Stream
都会被接受。
从 URL 下载文件到内存。 我的答案并没有准确显示如何下载文件以在 Excel 中使用,而是显示如何创建通用的内存中字节数组。
private static byte[] DownloadFile(string url)
{
byte[] result = null;
using (WebClient webClient = new WebClient())
{
result = webClient.DownloadData(url);
}
return result;
}
我也在尝试使用网络客户端下载文件的相同方法
https://archives.nseindia.com/archives/nsccl/var/C_VAR1_03052023_1.DAT”;
使用此网址。但我收到错误“操作超时”
我的实现是这样的
字符串文件_= “https://nsearchives.nseindia.com/archives/nsccl/var/C_VAR1_”+ pickerBODDate.Value.ToString("ddMMyyyy").Trim()+"_1.DAT";
字符串路径_ = txtFilePath.Text + "\NSEVAR.DAT";
WebClient wc_ = new WebClient();
try { wc_.Headers.Add(HttpRequestHeader.UserAgent, "Other"); wc_.Headers.Add(HttpRequestHeader.Accept,
“申请/pdf”); wc_.DownloadFile(文件_,路径_);
}