<%@ WebHandler Language="C#" Class="CustomPageDisplay" %> 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(); string tableName = context.Request.QueryString["t"].ToString(); string fileds = context.Request.QueryString["f"].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.BusinessDataManager.ExecuteTable("select "+fileds+" from "+ tableName +" where " + inst.ListSqlWhere + " " + inst.GetSqlOrderBy()); else table = inst.BusinessDataManager.ExecuteTable("select "+fileds+" from "+ tableName + " where " + inst.Program.PrimaryKey + " in (" + recordId + ") " + inst.GetSqlOrderBy()); int i,j; // System.Text.RegularExpressions.Regex rex=new System.Text.RegularExpressions.Regex(@"^\d+$"); string s; int c=table.Rows.Count; for (j = 0; j < c;j++ ) { for ( i = 0; i < table.Columns.Count; i++) { if (i != 0) sb.Append(","); s = table.Rows[j][i].ToString(); s = s.Replace("\r", " "); s = s.Replace("\n", " "); //s = s.Replace("\"", "\"\""); s = s.Replace(",", ","); s = s.Replace("'", "’"); sb.Append(s); } sb.AppendLine(""); } 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; } } }