博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net中GridView多行表头导出Excel表头显示不全问题解决方法
阅读量:7123 次
发布时间:2019-06-28

本文共 2845 字,大约阅读时间需要 9 分钟。

 

本次需要导出的Excel表格格式如下:

项目

本周实际

本月实际

本年实际

刷卡额

佣金收入

刷卡额

佣金收入

刷卡额

佣金收入

  

  

  

  

  

  

  

  

  

  

  

  

  

  

多表头具体的后台代码是在Row_Created事件中创建的。先看创建代码:

protected void GridView_RowCreated(object sender, GridViewRowEventArgs e)

{

//判断创建的行是否为表头行

if (e.Row.RowType == DataControlRowType.Header)

{

TableCellCollection tcHeader = e.Row.Cells;

//清除自动生成的表头

tcHeader.Clear();

tcHeader.Add(new TableHeaderCell());

tcHeader[0].RowSpan = 2;

tcHeader[0].Text = "项目";

tcHeader.Add(new TableHeaderCell());

tcHeader[1].ColumnSpan = 2;

tcHeader[1].Text = "本周实际";

tcHeader.Add(new TableHeaderCell());

tcHeader[2].ColumnSpan = 2;

tcHeader[2].Text = "本月实际";

tcHeader.Add(new TableHeaderCell());

tcHeader[3].ColumnSpan = 2;

tcHeader[3].Text = "本年实际</th></tr><tr>";

tcHeader.Add(new TableHeaderCell());

tcHeader[4].Text = "刷卡额";

tcHeader[4].Attributes.Add("style", "font-weight: bold;text-align: center;");

tcHeader.Add(new TableHeaderCell());

tcHeader[5].Text = "佣金收入";

tcHeader[5].Attributes.Add("style", "font-weight: bold;text-align: center;");

tcHeader.Add(new TableHeaderCell());

tcHeader[6].Text = "刷卡额";

tcHeader[6].Attributes.Add("style", "font-weight: bold;text-align: center;");

tcHeader.Add(new TableHeaderCell());

tcHeader[7].Text = "佣金收入";

tcHeader[7].Attributes.Add("style", "font-weight: bold;text-align: center;");

tcHeader.Add(new TableHeaderCell());

tcHeader[8].Text = "刷卡额";

tcHeader[8].Attributes.Add("style", "font-weight: bold;text-align: center;");

tcHeader.Add(new TableHeaderCell());

tcHeader[9].Text = "佣金收入";

tcHeader[9].Attributes.Add("style", "font-weight: bold;text-align: center;");

 

}

 

Excel表格导出方法代码如下

protected void ExportGridView(GridView gv)

{

 

Response.Clear();

Response.Buffer = true;

Response.Charset = "GB2312";

Response.AppendHeader("Content-Disposition","attachment;filename=export.xls");

Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。

Response.Write("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");

System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

gv.RenderControl(oHtmlTextWriter);

Response.Output.Write(oStringWriter.ToString());

Response.Flush();

Response.End();

}

 

根据这个方法导出的表格格式结果有问题,如下:

项目

本周实际

本月实际

本年实际

刷卡额

佣金收入

刷卡额

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

 

我发现表头格式不对,少了3个。

调试了一下,发现gv.HeaderRow.Cells.Count 值为7

也就是GridView默认表头是7个TableCell(这个和以下有7列数据是一样的)。但是实际上需要有10TableCell,少了3TableCell

因此我在Excel表格导出方法代码里面加了以下语句:

gv.HeaderRow.Cells.Add(new TableCell());

gv.HeaderRow.Cells.Add(new TableCell());

gv.HeaderRow.Cells.Add(new TableCell());

增加了这3条语句之后,导出的Excel表头格式正确。

得出结论:在用通过页面流的方式导出当前页的gridview内容到excel中的方法的时候,如果你写的是多行表头。遇到导出Excel格式缺失的话,你可以考虑在导出方法里面增加表头添加TableCell的方法

 

 

转载于:https://www.cnblogs.com/yy-2323/p/5341825.html

你可能感兴趣的文章
一个骚气的前端JS代码生成网站
查看>>
在springmvc中使用requestContextListener获取全部的request对象
查看>>
Jenkins_KillProcess
查看>>
MySQL 获得当前日期时间 函数
查看>>
《Nginx:取代Apache的高性能Web服务器》学习笔记(一)
查看>>
创建数组的方法
查看>>
layui的几个简单使用(简单弹窗,加载效果,移除加载效果)
查看>>
【linux操作命令】mysql
查看>>
postgresql支持sys_guid()
查看>>
cede词根
查看>>
怎么删除有外键约束的MySQL表中的数据
查看>>
Spring AOP的切入点表达式
查看>>
libevent
查看>>
python编程中的if __name__ == 'main' 的作用和原理
查看>>
网安——注入
查看>>
导入org.apache.poi.xssf 读取excel
查看>>
Could not load file or assembly 'System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral..
查看>>
SpringBoot注入Mapper提示Could not autowire. No beans of 'xxxMapper' type found错误
查看>>
教你拉筋的方法
查看>>
WP老杨解迷:如何营造让人花钱的游戏
查看>>