[英]Downloading by C# with indirect url
我有一个生成excel文件的间接链接。 我搜索了很多,发现一些方法没有做我需要的。 链接地址不直接引用excel文件,原因是每当请求URL时,网页都会创建一个新的excel文件__refreshes内容。 我使用了下面提到的不同方法。 我真正想要做的是,如果不打开浏览器,我想下载URL的内容(这是一个excel文件)并将其保存为excel文件。 这是链接 ,如果单击它,您将直接获得excel文件,但URL本身不包含excel文件的扩展名。
我使用了以下方法:
client.DownloadFile(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0", @"D:\a.xlsx");
上面的方法保存了内容,但遗憾的是它不能由excel显示,我不知道原因。
WebRequest request = HttpWebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
using (WebResponse response = request.GetResponse())
{
Stream responseStream = response.GetResponseStream();
StreamReader r = new StreamReader(responseStream);
//third party methods
}
上面的代码也用于搜索,但它没有提供我需要的东西,我使用了一些第三方dlls
将流保存为excel文件,并且再次保存的文件无法由excel打开。 我也使用过Process.Start但它打开了浏览器。 我不想打开任何浏览器。
它是压缩流。 你应该解压缩它
WebRequest request = HttpWebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
using (WebResponse response = request.GetResponse())
{
Stream responseStream = response.GetResponseStream();
using(var fs = File.Create("MarketWatchPlus-1394.4.24.xlsx"))
{
var zipStream = new System.IO.Compression.GZipStream(responseStream, System.IO.Compression.CompressionMode.Decompress,true);
zipStream.CopyTo(fs);
}
}
感谢EZI的好答案。 只是把它作为另一种选择。 HttpWebRequest确实具有自动解压缩的功能。
HttpWebRequest request = WebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0") as HttpWebRequest;
request.AutomaticDecompression = DecompressionMethods.GZip;
using (WebResponse response = request.GetResponse())
{
using (Stream fs = File.Create("excelFile.xlsx"))
{
response.GetResponseStream().CopyTo(fs);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.