C# 点击导出按钮GridView导出到Excel时不弹出打开或保存对话框,而是直接将Excel打开,如何实现

解决方案 »

  1.   

    //导出按钮  
    protected void Button3_Click(object sender, EventArgs e)
         {
            Export("application/ms-excel", "学生成绩报表.xls");
        }    private void Export(string FileType, string FileName)
        {
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.UTF7;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
            Response.ContentType = FileType;
            this.EnableViewState = false;
            StringWriter tw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            GridView1.RenderControl(hw);
            Response.Write(tw.ToString());
            Response.End();
        }
      

  2.   

    三楼的方法和我用的是一样的,仍然会弹出对话框,不行的这个好像是微软的下载机制,在不同的浏览器里面弹出形式还有不同,web程序貌似没有那么大权利去规避下载形式,闹心死了
      

  3.   

    用IE打开?这样好像没有什么必要吧..
    如果用Office打开...
    要先把文件保存到硬盘上,然后在打开
    文本文件我这样用过,反正大概思路是这样的,
      

  4.   

    可以考虑像QQ共享那样啊,将数据生成一个静态页,点击"HTML页面"查看,就跳到这个页面。而点击下载时,导出为EXCEL,不过那个HTML查看页的样式不大好控制倒是真的。
      

  5.   

    静态数据导出不是把页面区域导出到excel了么,需要用javascript,还要调用ActiveX,用户使用时候浏览器的安全级别太高还不能用,需要用户自己改浏览器安全级别,这不行的。web程序烦啊
      

  6.   

    在代码里面设置...1 #region 导出当前页到Excel中  
    2   
    3 //按下导出按钮  
    4 private void button7_Click(object sender, EventArgs e)   
    5 {   
    6      print(dataGridView1);   
    7 }   
    8 public void print(DataGridView dataGridView1)   
    9 {   
    10     //导出到execl  
    11     try  
    12      {   
    13         //没有数据的话就不往下执行  
    14         if (dataGridView1.Rows.Count == 0)   
    15             return;   
    16         //实例化一个Excel.Application对象  
    17          Microsoft.Office.Interop.Excel.Application excel =new Microsoft.Office.Interop.Excel.Application();   
    18   
    19         //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写  
    20         excel.Visible =false;   
    21                    
    22         //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错  
    23     excel.Application.Workbooks.Add(true);                 
    24         //生成Excel中列头名称  
    25         for (int i = 0; i < dataGridView1.Columns.Count; i++)   
    26          {   
    27             excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;   
    28          }   
    29         //把DataGridView当前页的数据保存在Excel中  
    30         for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)   
    31          {   
    32             for (int j = 0; j < dataGridView1.Columns.Count; j++)   
    33              {   
    34                 if (dataGridView1[j, i].ValueType ==typeof(string))   
    35                  {   
    36                     excel.Cells[i + 2, j + 1] ="'" + dataGridView1[j, i].Value.ToString();   
    37                  }   
    38                 else  
    39                  {   
    40                     excel.Cells[i + 2, j + 1] = dataGridView1[j, i].Value.ToString();   
    41                  }   
    42              }   
    43          }   
    44   
    45         //设置禁止弹出保存和覆盖的询问提示框  
    46         excel.DisplayAlerts =false;   
    47         excel.AlertBeforeOverwriting =false;   
    48   
    49         //保存工作簿  
    50         excel.Application.Workbooks.Add(true).Save();   
    51         //保存excel文件  
    52         excel.Save("D:" +"\\KKHMD.xls");   
    53                        
    54         //确保Excel进程关闭  
    55         excel.Quit();   
    56         excel =null;   
    57   
    58      }   
    59     catch (Exception ex)   
    60      {   
    61          MessageBox.Show(ex.Message,"错误提示");   
    62      }   
    63 }
    64 #endregion 
      

  7.   

    这个不是winform的datagridview么,还要用com组件?   
    我的是web的,也这样?
      

  8.   

    .... 自己改改啊  
     他这里是 读取datagridview  你换成girdview 不就行了吗 
       都是循环读取数据..
         你先自己改改吧  实在不改不了 我再帮你改吧...
      

  9.   

    COM组件  在项目添加引用里面  添加就行... 一般根据你机器安装的office来 
      

  10.   

    1.调用Excel的COM组件
    2.利用命令行
    System.Diagnostics.Process.Start(@"C:\a.xls");  //路径
      

  11.   

    你好,我用了你的这个方法在Web中的girdview中提示错误 6 无法将带 [] 的索引应用于“System.Web.UI.WebControls.GridView”类型的表达式 D:\【.Net开发环境池】\项目实战\Stock_inquiry_system\UI\InventoryManagement.aspx.cs 73 21 D:\...\UI\