protected void GenerateReport( object sender, EventArgs e )
    {
        ReportToMoscowProducer producer = new ReportToMoscowProducer();
        DateTime begin = DateTime.Parse( tbReportFromDate.Text );
        DateTime end = DateTime.Parse( tbReportToDate.Text );
        Stream strm = producer.ProduceReport( begin, end );

        if( strm != null )
        {
            // очищаем поток ответа
            Response.Clear();
            // формируем заголовки ответа
            Response.ContentType = "application/octet-stream";

            Response.AddHeader( "Content-Disposition", "attachment; filename=" + HttpUtility.UrlPathEncode( "ExcelReport.xml" ) );

            // записываем данные в выходной поток
            strm.Seek( 0, SeekOrigin.Begin );
            byte[] data = new byte[ strm.Length ];
            strm.Read( data, 0, data.Length );
            Response.BinaryWrite( data );

            // сбрасываем данные в поток
            Response.Flush();

            // завершаем работу
            Response.End();
        }
    }
    protected void GenerateReport( object sender, EventArgs e )
    {
        ReportToMoscowProducer producer = new ReportToMoscowProducer();
        DateTime begin = tbReportFromDate.Date;
        DateTime end = tbReportToDate.Date;

        Stream strm = producer.ProduceReport( begin, end );

        if( strm != null )
        {
            SendReport(strm);
        }
    }