<%@ WebHandler Language="C#" Class="CustomPageDisplay" Debug="true" %> using System; using System.Collections.Generic; using System.Web; using System.Data; using System.IO; using eMIS.Data; using System.Data.Common; using System.Web.SessionState; using eMIS; using System.Text; public class CustomPageDisplay : IHttpHandler, IRequiresSessionState { public void ProcessRequest (HttpContext context) { string programId = context.Request.QueryString["pid"].ToString(); string recordId = context.Request.QueryString["rid"].ToString(); //context.Response.Redirect("export.ashx?pid=" + programId + "&rid="); StringBuilder sb = new StringBuilder(); InstanceManager inst = new InstanceManager(context,programId); DataTable table; if (recordId == "") table = inst.GetListConfigurationTable(); else table = inst.BusinessDbOperator.ExecuteTable("select " + inst.Program.ListSqlSelect + " from " + inst.Program.ListTableName + " where "+inst.Program.PrimaryKey + " in (" + recordId + ") " + inst.GetSqlOrderBy()); DataTable elements = inst.Program.ListElements; int elementsCount = elements.Rows.Count; int i,j; for (i = 0; i < elementsCount; i++) { if (i != 0) sb.Append(","); sb.Append(elements.Rows[i]["kjms"]); } // System.Text.RegularExpressions.Regex rex=new System.Text.RegularExpressions.Regex(@"^\d+$"); ControlManager control = new ControlManager(inst); string s; int c=table.Rows.Count; for (j = 0; j < c;j++ ) { sb.AppendLine(""); for ( i = 0; i < elementsCount; i++) { control.Init(table.Rows[j], elements.Rows[i]); if (i != 0) sb.Append(","); s = control.Text; if(control.GetParamValue("expisnum","")=="1") { sb.Append("\t"); } s = s.Replace("\r", " "); s = s.Replace("\n", " "); //s = s.Replace("\"", "\"\""); s = s.Replace(",", ","); s = s.Replace("'", "’"); s = s.Replace("\"", """); sb.Append(s); } } context.Response.AddHeader("Content-Disposition", "attachment; filename=export.csv"); context.Response.ContentType = "application/octet-stream"; context.Response.ContentEncoding = Encoding.GetEncoding("gb2312"); context.Response.Write(sb.ToString()); //context.Response.Flush(); context.Response.End(); } public bool IsReusable { get { return false; } } }