欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#使用RenderControl将GridView控件导出到EXCEL的方法

程序员文章站 2023-12-21 14:48:04
本文实例展示了c#使用rendercontrol将gridview控件导出到excel的方法,是非常实用的一个功能,分享给大家供大家参考。具体如下: 主要功能代码如下:...

本文实例展示了c#使用rendercontrol将gridview控件导出到excel的方法,是非常实用的一个功能,分享给大家供大家参考。具体如下:

主要功能代码如下:

// 把gridview输出到excel文件 
private void exportexcel(gridview gridview, string title, string title2, string filename)
{
  int nhidecols = 0;
  //如果不想输出出某列,将visible设为false即可
  for (int i = 0; i < gridview.columns.count; i++)
  {
 if (gridview.columns[i].headertext == "设备状态")
 {
   gridview.columns[i].visible = false;
   gridview.columns[i].controlstyle.width = 0;
   nhidecols = 1;
   break;
 }
  }
  //设定显示字符集
  response.charset = "utf-8";
  //设定内容字符集
  response.contentencoding = encoding.getencoding("utf-8"); 

  //设定文件名
  response.appendheader("content-disposition", "attachment;filename=" + httputility.urlencode(filename, encoding.utf8).replace('+', '_').replace('-', '_'));
  //设定文件类型  也可以是application/ms-word,也可以是text/html(字符集设为gb2312)
  response.contenttype = "application/ms-excel";
  this.enableviewstate = false;
  using (stringwriter tw = new stringwriter())
  {
 using (htmltextwriter hell = new htmltextwriter(tw))
 {
   gridview.allowpaging = false;
   gridview.rendercontrol(hell);
   string s = tw.tostring();
   s = s.replace("\r\n", "");
   int index = s.indexof("<tr");
   //可以自定义excel文件的标题
   string head = "<tr><td colspan=\"" + (gridview.columns.count - nhidecols).tostring() + "\" style=\"text-align: center; height: 42px; font-size: 24px; font-weight: bolder; color: #000000;\">" + title + "</td></tr>" +
   "<tr><td colspan=\"" + (gridview.columns.count - nhidecols).tostring() + "\" style=\"text-align: center; height: 24px; font-size: 12px; color: #000000;\">" + title2 + "</td></tr>";
   //使用index来判断是否存在数据,当然也可以用gridview.rows.count来判断
   if (index != -1)
   {
 //有数据的
 s = s.insert(index, head);
   }
   else
   {
 //没有数据的时候
 s = "<table cellspacing=\"0\" cellpadding=\"3\" rules=\"rows\" border=\"1\" id=\"" + gridview.id + "\" style=\"background-color:white;border-color:#e7e7ff;border-width:1px;border-style:none;border-collapse:collapse;\">" +
   head + "</table>";
   }
   response.write(s);
   response.end();
 }
  }
}
//同时vs2005,vs2003会报错“类型“exgridview”的控件“gridviewmaster”必须放在具有 runat=server 的窗体标记内
//需要添加下面取消对gridviewmaster 控件验证的方法
public override void verifyrenderinginserverform(control control)
{
  if (!control.gettype().equals(gridview.gettype()))
  {
 base.verifyrenderinginserverform(control);
  }
}

本文实例代码备有较为详尽的注释,应该不难理解。希望本文实例对大家c#程序设计有所帮助。

上一篇:

下一篇: