小二哥's blog

----zhangzs8896(小二)

导航

DataGrid导入Excel

Posted on 2005-11-29 22:55  小二哥  阅读(725)  评论(1编辑  收藏  举报
  参数为DataGrid的ID
public void ToExcel(System.Web.UI.Control ctl)  
        
{
            HttpContext.Current.Response.AppendHeader(
"Content-Disposition","attachment;filename=Excel.xls");
            HttpContext.Current.Response.Charset 
="UTF-8";    
            HttpContext.Current.Response.ContentEncoding 
=System.Text.Encoding.Default;
            HttpContext.Current.Response.ContentType 
="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
            ctl.Page.EnableViewState =false;   
            System.IO.StringWriter  tw 
= new System.IO.StringWriter() ;
            System.Web.UI.HtmlTextWriter hw 
= new System.Web.UI.HtmlTextWriter (tw);
            ctl.RenderControl(hw);
            HttpContext.Current.Response.Write(tw.ToString());
            HttpContext.Current.Response.End();
        }

---以上适合"自动生成列"的DataGrid. ()
对于DataGrid的模板列,除了上面代码外,还要加些东西.
完整代码:
private static void ClearControls(Control control)
        
{
            
            
for (int i=control.Controls.Count -1; i>=0; i--)
            
{
                ClearControls(control.Controls[i]);
            }


            
if (!(control is TableCell))
            
{
                
if (control.GetType().GetProperty("SelectedItem"!= null)
                
{
                    LiteralControl literal 
= new LiteralControl();
                    control.Parent.Controls.Add(literal);
                    
try
                    
{
                        literal.Text 
= (string)control.GetType().GetProperty("SelectedItem").GetValue(control,null);
                    }

                    
catch
                    
{
                    }

                    control.Parent.Controls.Remove(control);
                }

                
else
                    
if (control.GetType().GetProperty("Text"!= null)
                
{
                    LiteralControl literal 
= new LiteralControl();
                    control.Parent.Controls.Add(literal);
                    literal.Text 
= (string)control.GetType().GetProperty("Text").GetValue(control,null);
                    control.Parent.Controls.Remove(control);
                }

            }

            
return;
        }

    

public  static  void OutPutExcel(DataGrid dgrd, string v_FileName)
        
{
            
try
            
{
                HttpContext.Current.Response.AppendHeader(
"Content-Disposition","attachment;filename="+v_FileName+".xls");
                HttpContext.Current.Response.Charset 
="gb2312";    
                HttpContext.Current.Response.ContentEncoding 
=System.Text.Encoding.Default;
                HttpContext.Current.Response.ContentType 
="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword
                dgrd.Page.EnableViewState =false
                System.IO.StringWriter  tw 
= new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter hw 
= new System.Web.UI.HtmlTextWriter (tw);
                ClearControls(dgrd);
                dgrd.RenderControl(hw);
                HttpContext.Current.Response.Write(tw.ToString());
                HttpContext.Current.Response.End();
            }

            
catch(Exception e)
            
{
                
throw e;
            }

        }