ExcelファイルをFTPサイトからメモリストリームに直接ロードしたいと思います。次に、OpenExcel(Stream)メソッドを使用して、FarPoint Spreadコントロールでファイルを開きます。私の問題は、ファイルをメモリに直接ダウンロードできるかどうかわからないことです。これが可能かどうか誰でも知っていますか?
はい、FTPからメモリにファイルをダウンロードできます。
FTPサーバーからストリームを渡して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));
ただし、ストリームをOpenExcel
メソッドで直接使用できるかどうかを言うために、FarPointには詳しくありません。 オンラインの例FileStream
で使用されているメソッドを表示しますが、あらゆる種類のStream
が受け入れられると仮定します。
URLからメモリにファイルをダウンロードします。 私の答えは、Excelで使用するファイルをダウンロードする方法を正確には示していませんが、汎用のインメモリバイト配列を作成する方法を示しています。
private static byte[] DownloadFile(string url)
{
byte[] result = null;
using (WebClient webClient = new WebClient())
{
result = webClient.DownloadData(url);
}
return result;
}