FineUI 官方论坛
标题:
多表头导出EXCEL
[打印本页]
作者:
treedun
时间:
2013-11-8 10:08
标题:
多表头导出EXCEL
查了半天也查不到,真是郁闷,不知道是这个问题太弱了还是大家都用不到,想了半天是弄出来了,看上去挺弱的,反正能导出就完了。
欢迎交流参考啊,谢谢。
逻辑就是循环判断GroupColumns里有多少个Columns,输出就可以了,以后FINEUI新版本能自带导出复合表头这功能就更方便了。
protected string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">");
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
sb.AppendFormat("<td>{0}</td>", column.HeaderText);
}
//////////////////////////////////////////////////////////////////////////
// []
//循环输出多表头
//第1,2层表头
int icount = 0;
int icount_add = 0;
foreach (GridGroupColumn column in grid.GroupColumns)
{
sb.AppendFormat("<td colspan='12'>{0}</td><tr>", column.HeaderText);
icount = column.GroupColumns.Count;
for (int i = 0; i < icount; i++)
{
for (int j = 0; j < column.GroupColumns[i].Columns.Count; j++)
{
icount_add++;
}
sb.AppendFormat("<td colspan='{1}'>{0}</td>", column.GroupColumns[i].HeaderText,icount_add);
icount_add = 0;
}
}
//////////////////////////////////////////////////////////////////////////
//第三层
icount_add = 0;
sb.Append("<tr>");
foreach (GridGroupColumn column in grid.GroupColumns)
{
icount = column.GroupColumns.Count;
for (int i = 0; i < icount; i++)
{
for (int j = 0; j < column.GroupColumns[i].Columns.Count; j++)
{
sb.AppendFormat("<td>{0}</td>", column.GroupColumns[icount_add].Columns[j].HeaderText);
}
icount_add++;
}
}
sb.Append("</tr>");
//////////////////////////////////////////////////////////////////////////
sb.Append("</tr></tr>");
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
foreach (object value in row.Values)
{
string html = value.ToString();
if (html.StartsWith(Grid.TEMPLATE_PLACEHOLDER_PREFIX))
{
// 模板列
string templateID = html.Substring(Grid.TEMPLATE_PLACEHOLDER_PREFIX.Length);
Control templateCtrl = row.FindControl(templateID);
html = GetRenderedHtmlSource(templateCtrl);
}
else
{
// 处理CheckBox
if (html.Contains("box-grid-static-checkbox"))
{
if (html.Contains("uncheck"))
{
html = "×";
}
else
{
html = "√";
}
}
// 处理图片
if (html.Contains("<img"))
{
string prefix = Request.Url.AbsoluteUri.Replace(Request.Url.AbsolutePath, "");
html = html.Replace("src="", "src="" + prefix);
}
}
sb.AppendFormat("<td style='mso-number-format:\\@'>{0}</td>", html);
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
复制代码
作者:
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