FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 3186|回复: 2
打印 上一主题 下一主题

多表头导出EXCEL

[复制链接]
跳转到指定楼层
楼主
发表于 2013-11-8 10:08:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
查了半天也查不到,真是郁闷,不知道是这个问题太弱了还是大家都用不到,想了半天是弄出来了,看上去挺弱的,反正能导出就完了。
欢迎交流参考啊,谢谢。
逻辑就是循环判断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.         }
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2014-6-30 15:34:59 | 只看该作者
GetRenderedHtmlSource()函数代码?
板凳
发表于 2014-10-23 15:38:42 | 只看该作者
大侠,能够做个4.X版的demo啊?改成GroupField不太适应!谢了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-25 22:29 , Processed in 0.045440 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表