我正在使用:`private void get_stocks_data() { byte [] result; byte [] buffer = new byte [4096];
WebRequest wr = WebRequest.Create("http://www.tase.co.il/TASE/Pages/ExcelExport.aspx?sn=he-IL_ds&enumTblType=AllSecurities&Columns=he-IL_Columns&Titles=he-IL_Titles&TblId=0&ExportType=1");
using (WebResponse response = wr.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (MemoryStream memoryStream = new MemoryStream())
{
int count = 0;
do
{
count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);
} while (count != 0);
result = memoryStream.ToArray();
write_data_to_excel(result);
}
}
}`
下载excel文件,
这种方法可以在我的电脑上填写文件:
private void write_data_to_excel(byte[] input)
{
StreamWriter str = new StreamWriter("stockdata.xls");
for (int i = 0; input.Length > i; i++)
{
str.WriteLine(input[i].ToString());
}
str.Close();
}
结果是我得到了很多数字...... 我究竟做错了什么?我下载的文件是excel 2003版,在我的计算机上我有2007 ... 感谢。
答案 0 :(得分:5)
我建议你改用WebClient.DownloadFile()
。
这是一个更高级别的方法,它将从手动创建请求,处理编码等等中抽象出来。
答案 1 :(得分:1)
问题出现在Write_data_to_excel函数中
当你使用StreamWriter.WriteLine
方法时,它需要字符串,
你把字节作为字符串传递所以你的二进制值说10现在将是字符串10
试试FileStream f = File.OpenWrite("stockdata.xlsx");
这会有用。
f.Write(input,0,input.Length);