下载并保存excel文件

时间:2011-04-14 00:51:26

标签: c# .net httprequest

我正在使用:`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 ... 感谢。

2 个答案:

答案 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);
这会有用。