FineUI 官方论坛

标题: 多表头导出EXCEL [打印本页]

作者: treedun    时间: 2013-11-8 10:08
标题: 多表头导出EXCEL
查了半天也查不到,真是郁闷,不知道是这个问题太弱了还是大家都用不到,想了半天是弄出来了,看上去挺弱的,反正能导出就完了。
欢迎交流参考啊,谢谢。
逻辑就是循环判断GroupColumns里有多少个Columns,输出就可以了,以后FINEUI新版本能自带导出复合表头这功能就更方便了。
  1. protected string GetGridTableHtml(Grid grid)
  2.         {
  3.             StringBuilder sb = new StringBuilder();

  4.             sb.Append("<table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">");

  5.             sb.Append("<tr>");
  6.             foreach (GridColumn column in grid.Columns)
  7.             {
  8.                 sb.AppendFormat("<td>{0}</td>", column.HeaderText);
  9.             }
  10.             //////////////////////////////////////////////////////////////////////////
  11.             //  []
  12.             //循环输出多表头
  13.             //第1,2层表头
  14.             int icount = 0;
  15.             int icount_add = 0;

  16.             foreach (GridGroupColumn column in grid.GroupColumns)
  17.             {
  18.                 sb.AppendFormat("<td colspan='12'>{0}</td><tr>", column.HeaderText);
  19.                 icount = column.GroupColumns.Count;


  20.                 for (int i = 0; i < icount; i++)
  21.                 {
  22.                     for (int j = 0; j < column.GroupColumns[i].Columns.Count; j++)
  23.                     {
  24.                         icount_add++;
  25.                     }
  26.                     sb.AppendFormat("<td colspan='{1}'>{0}</td>", column.GroupColumns[i].HeaderText,icount_add);
  27.                     icount_add = 0;
  28.                 }
  29.             }
  30.             //////////////////////////////////////////////////////////////////////////
  31.             //第三层
  32.             icount_add = 0;
  33.             sb.Append("<tr>");
  34.             foreach (GridGroupColumn column in grid.GroupColumns)
  35.             {
  36.                 icount = column.GroupColumns.Count;

  37.                 for (int i = 0; i < icount; i++)
  38.                 {
  39.                     for (int j = 0; j < column.GroupColumns[i].Columns.Count; j++)
  40.                     {
  41.                         sb.AppendFormat("<td>{0}</td>", column.GroupColumns[icount_add].Columns[j].HeaderText);
  42.                     }
  43.                     icount_add++;
  44.                 }
  45.             }
  46.             sb.Append("</tr>");
  47.             //////////////////////////////////////////////////////////////////////////
  48.             
  49.             sb.Append("</tr></tr>");


  50.             foreach (GridRow row in grid.Rows)
  51.             {
  52.                 sb.Append("<tr>");
  53.                 foreach (object value in row.Values)
  54.                 {
  55.                     string html = value.ToString();
  56.                     if (html.StartsWith(Grid.TEMPLATE_PLACEHOLDER_PREFIX))
  57.                     {
  58.                         // 模板列
  59.                         string templateID = html.Substring(Grid.TEMPLATE_PLACEHOLDER_PREFIX.Length);
  60.                         Control templateCtrl = row.FindControl(templateID);
  61.                         html = GetRenderedHtmlSource(templateCtrl);
  62.                     }
  63.                     else
  64.                     {
  65.                         // 处理CheckBox
  66.                         if (html.Contains("box-grid-static-checkbox"))
  67.                         {
  68.                             if (html.Contains("uncheck"))
  69.                             {
  70.                                 html = "×";
  71.                             }
  72.                             else
  73.                             {
  74.                                 html = "√";
  75.                             }
  76.                         }

  77.                         // 处理图片
  78.                         if (html.Contains("<img"))
  79.                         {
  80.                             string prefix = Request.Url.AbsoluteUri.Replace(Request.Url.AbsolutePath, "");
  81.                             html = html.Replace("src="", "src="" + prefix);
  82.                         }
  83.                     }

  84.                     sb.AppendFormat("<td style='mso-number-format:\\@'>{0}</td>", html);
  85.                 }
  86.                 sb.Append("</tr>");
  87.             }

  88.             sb.Append("</table>");

  89.             return sb.ToString();
  90.         }
复制代码





作者: beingtop    时间: 2014-6-30 15:34
GetRenderedHtmlSource()函数代码?
作者: liny1997    时间: 2014-10-23 15:38
大侠,能够做个4.X版的demo啊?改成GroupField不太适应!谢了!




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4