C#导出Excel——多表头、表头跨行跨列合并
2015-05-20 17:39
483 查看
<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
<span style="font-family: Arial, Helvetica, sans-serif;">public FileResult ExpDayReport(string the_date, int company_id, int city_id, int addr_id, string group, string kfid)</span>
{ GsReport rpBLL = new GsReport(); DataTable dt = rpBLL.ExpDayReport(the_date, company_id, city_id, addr_id, group, kfid); return File(Export.DataTable2Excel(dt, "GB2312", DayReptExpRowDeal), "application/x-xls", the_date + "工时报表.xls"); }
public void DayReptExpRowDeal(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { //第一行表头 TableCellCollection tcHeader = e.Row.Cells; tcHeader.Clear(); tcHeader.Add(new TableHeaderCell()); tcHeader[0].Attributes.Add("rowspan", "2"); //跨行 tcHeader[0].Text = "员工标识"; tcHeader.Add(new TableHeaderCell()); tcHeader[1].Attributes.Add("rowspan", "2"); tcHeader[1].Text = "姓名"; tcHeader.Add(new TableHeaderCell()); tcHeader[2].Attributes.Add("rowspan", "2"); tcHeader[2].Text = "组别"; tcHeader.Add(new TableHeaderCell()); tcHeader[3].Text = "工号"; tcHeader[3].Attributes.Add("rowspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[4].Text = "标识"; tcHeader[4].Attributes.Add("rowspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[5].Text = "班次"; tcHeader[5].Attributes.Add("rowspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[6].Text = "工时"; tcHeader[6].Attributes.Add("rowspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[7].Text = "排班时长"; tcHeader[7].Attributes.Add("rowspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[8].Text = "签入时长"; tcHeader[8].Attributes.Add("rowspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[9].Text = "所差工时"; tcHeader[9].Attributes.Add("rowspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[10].Text = "闲时工时"; tcHeader[10].Attributes.Add("colspan", "2");//跨列 tcHeader.Add(new TableHeaderCell()); tcHeader[11].Text = "考勤记录"; tcHeader[11].Attributes.Add("colspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[12].Text = "加班记录"; tcHeader[12].Attributes.Add("colspan", "2"); tcHeader.Add(new TableHeaderCell()); tcHeader[13].Text = "换班记录</tr><tr>"; tcHeader[13].Attributes.Add("colspan", "2"); //第二行表头 tcHeader.Add(new TableHeaderCell()); tcHeader[14].Text = "工时类型"; tcHeader.Add(new TableHeaderCell()); tcHeader[15].Text = "时长"; tcHeader.Add(new TableHeaderCell()); tcHeader[16].Text = "工时类型"; tcHeader.Add(new TableHeaderCell()); tcHeader[17].Text = "时长"; tcHeader.Add(new TableHeaderCell()); tcHeader[18].Text = "加班类型"; tcHeader.Add(new TableHeaderCell()); tcHeader[19].Text = "时长"; tcHeader.Add(new TableHeaderCell()); tcHeader[20].Text = "换班记录"; tcHeader.Add(new TableHeaderCell()); tcHeader[21].Text = "时长"; } if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Cells[6].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); e.Row.Cells[7].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); e.Row.Cells[8].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); e.Row.Cells[9].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); e.Row.Cells[10].Text = ParmReplace.ParmDesc("wh_type", e.Row.Cells[10].Text); e.Row.Cells[12].Text = ReplaceKqType(e.Row.Cells[12].Text); e.Row.Cells[14].Text = ParmReplace.ParmDesc("ot_type", e.Row.Cells[14].Text); } e.Row.Cells[0].Visible = false; }
public string ReplaceKqType(string kq_types) { var result = ""; var typeArray = kq_types.Split(','); var KqTypelist = new BLL.GS.Kaoqin().GetAllKqType(); for (var i = 0; i < typeArray.Length; i++) { for (var j = 0; j < KqTypelist.Count; j++) { if (KqTypelist[j].Kq_type.ToString() == typeArray[i]) result += KqTypelist[j].Kq_name + ","; } } result = result.Substring(0, result.Length - 1); result = Regex.Replace(result, @",", "<br/>", RegexOptions.IgnoreCase);//逗号替换为换行 return result; }
/// <summary> /// 使用方法:return File(Export.DataTable2Excel(dt, "GB2312", null), "application/x-xls", "3G.xls"); /// </summary> /// <param name="dt"></param> /// <param name="filename"></param> /// <param name="encoding">其值为"UTF-8"或"GB2312"</param> /// <param name="gvExport_RowDataBound"></param> public static byte[] DataTable2Excel(DataTable dt,string encoding, GridViewRowEventHandler gvExport_RowDataBound) { GridView gvExport = null; //IO用于导出并返回Excel文件 System.IO.StringWriter strWriter = null; System.Web.UI.HtmlTextWriter htmlWriter = null; byte[] str = null; if (dt != null) { strWriter = new System.IO.StringWriter(); htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); gvExport = new GridView(); if (gvExport_RowDataBound != null) gvExport.RowDataBound += new GridViewRowEventHandler(gvExport_RowDataBound); gvExport.DataSource = dt.DefaultView; gvExport.AllowPaging = false; gvExport.DataBind(); //把文件发送到客户端 gvExport.RenderControl(htmlWriter); str = System.Text.Encoding.GetEncoding(encoding).GetBytes("<meta http-equiv='content-type' content='application/ms-excel; charset=" + encoding + "'/>" + strWriter.ToString()); } return str; }
相关文章推荐
- 导出动态Excel表头、动态跨行、跨列
- JAVA导出excel如何设置表头跨行或者跨列,跪求各位大神了
- ASP.Net 后台执行导出Excel list集合 有跨行合并
- C# 导出为二维表头的EXCEL
- C#合并excel单元格,操作合并后的单元格 (winform导出excel)
- Easyui+Spring Mvc导出Excel:支持按模板样式导出、合并表头、合并单元格、多sheet
- 【Vegas原创】GridView修改表头,并导出Excel(C#版)
- POI框架导出EXCEL的简单列子(跨行跨列)合并单元格
- C#导出涉及行列合并的复杂的Excel数据
- C#GridView控件导出Excel及多层表头类
- DataSet导出到Excel,并生成文件(C#实现,可合并行和列)
- C# WinForm DataTable 导出 Excel 多行表头、合并单元格
- [转] C# DataTable 导出 Excel 进阶 多行表头、合并单元格、中文文件名乱码
- 压缩包里面excel 导出 (跨行跨列)
- 【Vegas原创】GridView修改表头,并导出Excel(C#版)
- ASP.net(C#)导出Excel----普通表头,多层表头。
- c# 高效率导出多维表头excel
- 【Vegas原创】GridView修改表头,并导出Excel(C#版)
- GridView修改表头,并导出Excel(C#版)
- C#合并多个结构一样的Excel