#region RoomReportObjectDataSource /// <summary> /// 返回数据的结构体 /// </summary> public struct ROOMREPORT { public string BLOCK_NAME { get; set; }//楼名 public string ROOM_NO { get; set; }//房间号 public string SETTLE { get; set; }//是否安置 public int? CHECK_NO { get; set; }//选房顺序号 public string DOCUMENT_NUM { get; set; }//档案号 public string OWNER_NAME { get; set; }//产权人 public string CONFIRMER_NAME { get; set; }//确权人 public string RESIDENT_NAME { get; set; }//使用人 } public int count; [DataObjectMethod(DataObjectMethodType.Select, true)] public IEnumerable Get_Data(int startIndex, int pageSize, long gr_id, long type_id, long block_id, string settle, string sortDirection, string sortColumn) { DataClassesDataContext db = DataClassesDataContext.Default; List<T_ROOM> rooms = db.T_ROOM.Where(r => r.T_BLOCK.T_GROUND_RATIO.GR_ID == gr_id && r.T_BLOCK.U_ID == type_id && r.ROOM_NO!=null).ToList(); if (block_id != 0) { rooms = rooms.Where(r => r.BLOCK_ID == block_id).ToList(); } if (settle != "0") { if (settle == "1") { rooms = rooms.Where(r => r.FAMILY_ID != null).ToList(); } else { rooms = rooms.Where(r => r.FAMILY_ID == null).ToList(); } } List<ROOMREPORT> roomreports = new List<ROOMREPORT>(); foreach (var item in rooms) { ROOMREPORT roomreport = new ROOMREPORT(); roomreport.BLOCK_NAME = item.T_BLOCK.BLOCK_NAME; roomreport.ROOM_NO = item.ROOM_NO; roomreport.SETTLE = item.FAMILY_ID == null ? "未安置" : "已安置"; if (item.FAMILY_ID != null) { roomreport.CHECK_NO = item.T_MOVE_FAMILY.CHECK_NO; roomreport.DOCUMENT_NUM = item.T_MOVE_FAMILY.DOCUMENT_NUM; roomreport.OWNER_NAME = item.T_MOVE_FAMILY.OWNER_NAME; roomreport.RESIDENT_NAME = item.T_MOVE_FAMILY.RESIDENT_NAME; roomreport.CONFIRMER_NAME = item.T_MOVE_FAMILY.CONFIRMER_NAME; } roomreports.Add(roomreport); } count = roomreports.Count; if (sortDirection == "ASC") { roomreports = roomreports.OrderBy(r => GetPropertyValue(r,sortColumn)).ToList(); } else { roomreports = roomreports.OrderByDescending(r =>GetPropertyValue(r,sortColumn)).ToList(); } datastring = RoomReportString(roomreports); return roomreports.Skip(startIndex).Take(pageSize).ToArray(); } public int Get_Count(long gr_id, long type_id, long block_id, string settle,string sortDirection, string sortColumn) { return count; } /// <summary> /// 返回table,用于导出excel /// </summary> public static string datastring { get; set; } /// <summary> /// 返回table,用于导出excel /// </summary> /// <param name="rms"></param> /// <returns></returns> public string RoomReportString(List<ROOMREPORT> rms) { StringBuilder sb = new StringBuilder(); sb.Append("<table cellspacing="0" rules="all" border="1" style="border-collapse:collapse;">"); sb.Append("<tr>"); sb.AppendFormat("<td>{0}</td>", "楼号"); sb.AppendFormat("<td>{0}</td>", "房间号"); sb.AppendFormat("<td>{0}</td>", "是否安置"); sb.AppendFormat("<td>{0}</td>", "选房顺序号"); sb.AppendFormat("<td>{0}</td>", "档案号"); sb.AppendFormat("<td>{0}</td>", "产权人"); sb.AppendFormat("<td>{0}</td>", "确权人"); sb.AppendFormat("<td>{0}</td>", "使用人"); sb.Append("</tr>"); foreach (var item in rms) { sb.Append("<tr>"); sb.AppendFormat("<td>{0}</td>", item.BLOCK_NAME); sb.AppendFormat("<td>{0}</td>", item.ROOM_NO); sb.AppendFormat("<td>{0}</td>", item.SETTLE); sb.AppendFormat("<td>{0}</td>", item.CHECK_NO); sb.AppendFormat("<td>{0}</td>", item.DOCUMENT_NUM); sb.AppendFormat("<td>{0}</td>", item.OWNER_NAME); sb.AppendFormat("<td>{0}</td>", item.CONFIRMER_NAME); sb.AppendFormat("<td>{0}</td>", item.RESIDENT_NAME); sb.Append("</tr>"); } sb.Append("</table>"); return sb.ToString(); } /// <summary> /// 反射,动态进行orderby操作 翁皓文 2013年4月26 /// </summary> /// <param name="obj"></param> /// <param name="property"></param> /// <returns></returns> private static object GetPropertyValue(object obj, string property) { System.Reflection.PropertyInfo propertyInfo = obj.GetType().GetProperty(property); return propertyInfo.GetValue(obj, null); } #endregion
前台导出按钮事件:
protected void Button1_Click(object sender, EventArgs e) { Response.ClearContent(); Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls"); Response.ContentType = "application/excel"; Response.Write(RoomListManager.datastring); Response.End(); }