参考网上某位前辈的代码,但是出现一个问题。 
第一次执行excel生成的时候,出来对话框[打开][保存][取消],不管点[打开]还是[保存],就卡在download画面了(就是一个文件飞阿飞的)。要点取消,然后再次生成的时候,才能正常的[打开]或者[保存],请问是什么原因? 
如果加上excel.Visible  =  true; ,这个问题可以解决,但是不管是[打开]还是[保存],画面都会闪一下的,不想要这个效果。 以下是部分代码:  
          public  static  void  OutputExcel(DataView  dv,  string  str)  
          {  
                  //dv为要输出到Excel的数据,str为标题名称  
                  GC.Collect();  
                  Application  excel;//  =  new  Application();  
                  int  rowIndex  =  4;  
                  int  colIndex  =  1;  
    
                  _Workbook  xBk;  
                  _Worksheet  xSt;  
                  excel  =  new  ApplicationClass();  
                  xBk  =  excel.Workbooks.Add(true);  
                  xSt  =  (_Worksheet)xBk.ActiveSheet;                    //  
                  //取得表格中的数据  
                  //(代码省略..)  
                  //显示效果    
                  excel.Visible  =  true;  
    
                  //xSt.Export(Server.MapPath(".")+"\\"+this.xlfile.Text+".xls",SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportFormat.ssExportHTML);  
                  xBk.SaveCopyAs(Server.MapPath(".")  +  "\\"  +  this.xlfile.Text  +  ".xls");  
                  ds  =  null;  
                  xBk.Close(false,  null,  null);  
    
                  excel.Quit();  
                  System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);  
                  System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);  
                  System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);  
                  xBk  =  null;  
                  excel  =  null;  
                  xSt  =  null;  
                  GC.Collect();  
                  string  path  =  Server.MapPath(this.xlfile.Text  +  ".xls");  
    
                  System.IO.FileInfo  file  =  new  System.IO.FileInfo(path);  
                  Response.Clear();  
                  Response.Charset  =  "GB2312";  
                  Response.ContentEncoding  =  System.Text.Encoding.UTF8;  
                  //  添加头信息,为"文件下载/另存为"对话框指定默认文件名  
                  Response.AddHeader("Content-Disposition",  "attachment;  filename="  +  Server.UrlEncode(file.Name));  
                  //  添加头信息,指定文件大小,让浏览器能够显示下载进度  
                  Response.AddHeader("Content-Length",  file.Length.ToString());  
    
                  //  指定返回的是一个不能被客户端读取的流,必须被下载  
                  Response.ContentType  =  "application/ms-excel";  
    
                  //  把文件流发送到客户端  
                  Response.WriteFile(file.FullName);  
                  //  停止页面的执行  
    
                  Response.End();  
          }