public static void ProcessExport(HttpContext context) { IList <string> columnFields; IDataExportProvider provider; string extension; string portal = context.Request["portal"]; string columns = context.Request["columns"]; //获取导出提供者 switch (context.Request["exportFormat"] ?? "excel") { default: case "excel": provider = new LocaledExcelExportProvider(); extension = "xls"; break; case "csv": provider = new CsvExportProvider(); extension = "csv"; break; case "txt": provider = new TextExportProvider(); extension = "txt"; break; } //获取列名 // Regex reg = new Regex("^export_fields\\[\\d+\\]$", RegexOptions.IgnoreCase); columnFields = new List <string>(); // foreach (string key in context.Request.QueryString.Keys) // { // if (reg.IsMatch(key)) // { // columnFields.Add(context.Request.QueryString[key]); // } // } IDataExportPortal _portal = ExportItemManager.GetPortal(context.Request.QueryString["portal"]); if (_portal == null) { throw new ArgumentNullException("_portal"); } ExportParams parameter = DataExportDirector.GetExportParams(context.Request["params"], columnFields.ToArray()); byte[] bytes = DataExportDirector.Export(_portal, parameter, provider); context.Response.BinaryWrite(bytes); context.Response.ContentType = "application/octet-stream"; context.Response.AppendHeader("Content-Disposition", String.Format("attachment;filename=\"{0:yyyyMMdd-hhssfff}.{1}\"", DateTime.Now, extension)); }
public static IDataExportPortal GetPortal(string className, string _params, string[] columnNames) { IDataExportPortal portal = ExportUtil.GetNotNullPortal(className); string[] splitArr; object[,] data; string[] paramsArr = _params.Split(';'); data = new object[paramsArr.Length + 1, 2]; //添加渠道编号 data[0, 0] = "merchantId"; data[0, 1] = new LoginUserManager().CurrentUserInfo.MerchantID; //添加传入的参数 for (int i = 0; i < paramsArr.Length; i++) { splitArr = paramsArr[i].Split(':'); data[i + 1, 0] = splitArr[0]; data[i + 1, 1] = paramsArr[i].Substring(splitArr[0].Length + 1); } portal.Parameters = new ExportParams(data, columnNames); return(portal); }
public static string Setup(string portal) { //todo: need refactor export manager IDataExportPortal dp = ExportManager.GetPortal(portal); return(WebExportOptionUIBuilder.BuildColumnCheckHtml(dp)); }
public JsonResult GetTotalView() { return(new U1Json(new { OrderNum = 1, SaleGoodsNum = 2 })); IDataExportPortal portal = ExportHelper.GetPortal(this.Request["portal"], this.Request["params"], null); return(new U1Json(portal.GetTotalView())); }
/// <summary> /// 通过类名来获取存在的导出入口 /// </summary> /// <param name="exportPortalClassFullName"></param> /// <returns></returns> public static IDataExportPortal GetNotNullPortal(string exportPortalClassFullName) { IDataExportPortal portal = GetPortal(exportPortalClassFullName); if (portal == null) { throw new ArgumentNullException(String.Format("导出类型不存在或未实现接口:IDataExportPortal!类名:{0}", exportPortalClassFullName)); } return(portal); }
public void ProcessExport(string portal, string columns) { IList <string> columnNames; IDataExportProvider provider; string extension; //获取导出提供者 switch (this.Request["exportFormat"] ?? "excel") { default: case "excel": provider = new ExcelExportProvider(); extension = "xls"; break; case "csv": provider = new CsvExportProvider(); extension = "csv"; break; case "txt": provider = new TextExportProvider(); extension = "txt"; break; } //获取列名 Regex reg = new Regex("^columnNames\\[\\d+\\]$", RegexOptions.IgnoreCase); columnNames = new List <string>(); foreach (string key in this.Request.QueryString.Keys) { if (reg.IsMatch(key)) { columnNames.Add(this.Request.QueryString[key]); } } IDataExportPortal _portal = ExportHelper.GetPortal(portal, this.Request["params"], columnNames.ToArray()); byte[] bytes = DataExportDirector.Export(_portal, provider); this.Response.BinaryWrite(bytes); this.Response.ContentType = "application/octet-stream"; this.Response.AppendHeader("Content-Disposition", String.Format("attachment;filename=\"{0:yyyyMMdd-hhssfff}.{1}\"", DateTime.Now, extension)); }
public static byte[] Export(IDataExportPortal portal, ExportParams parameters, IDataExportProvider provider) { int totalCount; IDictionary<string, String> dict = null; //获取参数的索引及名称 if (parameters != null && parameters.ExportFields != null) { dict = portal.GetExportFieldAndName(parameters.ExportFields); } return provider.Export( portal.GetShemalAndData(parameters == null ? null : parameters.Parameters, out totalCount), dict); }
public static byte[] Export(IDataExportPortal portal, ExportParams parameters, IDataExportProvider provider) { int totalCount; IDictionary <string, String> dict = null; //获取参数的索引及名称 if (parameters != null && parameters.ExportFields != null) { dict = portal.GetExportFieldAndName(parameters.ExportFields); } return (provider.Export( portal.GetShemalAndData(parameters == null ? null : parameters.Parameters, out totalCount), dict)); }
/// <summary> /// 通过类名来获取导出入口 /// </summary> /// <param name="exportPortalClassFullName"></param> /// <returns></returns> public static IDataExportPortal GetPortal(string exportPortalClassFullName) { IDataExportPortal portal = null; Assembly[] asses = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly ass in asses) { Type type = ass.GetType(exportPortalClassFullName); if (type != null) { portal = Activator.CreateInstance(type) as IDataExportPortal; if (portal != null) { break; } } } return(portal); }
public static string GetExportData(HttpContext context) { IDataExportPortal portal = ExportItemManager.GetPortal(context.Request.QueryString["portal"]); ExportParams parameter = DataExportDirector.GetExportParams( context.Request["params"], null); int pageIndex, pageSize; if (context.Request["page"] != null) { int.TryParse(context.Request["page"], out pageIndex); parameter.Parameters.Add("pageIndex", pageIndex); } if (context.Request["rows"] != null) { int.TryParse(context.Request["rows"], out pageSize); parameter.Parameters.Add("pageSize", pageSize); } int totalCount; DataTable dt = portal.GetShemalAndData(parameter.Parameters, out totalCount); return(JsonConvert.SerializeObject(new { total = totalCount, rows = dt })); }
public static string Setup(string portal) { IDataExportPortal dp = ExportItemManager.GetPortal(portal); return(WebExportOptionUIBuilder.BuildColumnCheckHtml(dp)); }
public static string BuildColumnCheckHtml(IDataExportPortal portal) { StringBuilder sb = new StringBuilder(); //================ Output Javascript ==================// sb.Append(@"<script type=""text/javascript""> var wbexp={ config:{ //处理请求的Url地址 urlHandler:'', //处理生成Json的对象 jsonHandler:null, params:null, page:null }, doExport:function(portal){ var data=this.config.jsonHandler.toQueryString('ui-export'); if(this.config.params==null){ var regMatch=/(\?|&)params=(.+)&*/i.exec(location.search); this.config.params=regMatch?regMatch[2]:''; } if(!this.config.page){ this.config.page=document.getElementById('export_iframe'); } this.config.page.src=this.config.urlHandler + (this.config.urlHandler.indexOf('?')==-1?'?':'&') + 'portal=' + portal + '&' + data + '¶ms=' + this.config.params; } }; </script>"); sb.Append(@"<div class=""ui-export"" id=""ui-export"">"); //====================== 导出格式 =====================// sb.Append(@"<div><strong>选择导出格式</strong></div> <ul class=""columnList""> <li class=""export_format_excel""><input checked=""checked"" field=""ExportFormat"" style=""border:none"" name=""export_format"" type=""radio"" value=""excel"" id=""export_format_excel""/> <label for=""wbexp_format_excel"">Excel文件</label> </li> <li class=""export_format_csv""><input type=""radio"" field=""ExportFormat"" style=""border:none"" name=""export_format"" value=""csv"" id=""export_format_csv""/> <label for=""wbexp_format_csv"">CSV数据文件</label> </li> <li class=""export_format_txt""><input type=""radio"" field=""ExportFormat"" style=""border:none"" name=""export_format"" value=""txt"" id=""export_format_txt""/> <label for=""wbexp_format_txt"">文本</label> </li> </ul><div style=""clear:both""></div><br />"); //====================== 导出列 =======================// if (portal.ColumnNames == null || portal.ColumnNames.Length == 0) { sb.Append("<em><strong>该导出方案不包含可选择的导出列</strong></em>"); } else { sb.Append(@"<div class=""selColumn""><strong>请选择要导出的列:</strong> <ul class=""columnList"">"); int tmpInt = 0; foreach (DataColumnMapping column in portal.ColumnNames) { sb.Append( "<li><input type=\"checkbox\" style=\"border:none\" checked=\"checked\" field=\"export_fields[") .Append(tmpInt.ToString()).Append("]\"") .Append(@" id=""export_column_") .Append(column.Field) .Append("\" value=\"").Append(column.Field) .Append("\"/><label for=\"export_column_") .Append(column.Field) .Append("\">").Append(column.Name) .Append("</label></li>"); tmpInt++; } sb.Append(@"</ul></div>"); } sb.Append(@" <iframe id=""export_iframe"" style=""display:none""></iframe> <div style=""clear:both""></div> </div>"); sb.Append(@"<input type=""button"" class=""btn_export"" onclick=""wbexp.doExport('") .Append(portal.PortalKey).Append(@"')"" value="" 导出 ""/>"); return(sb.ToString()); }
public static string BuildColumnCheckHtml(string exportPortalClassFullName) { IDataExportPortal portal = ExportUtil.GetPortal(exportPortalClassFullName); return(BuildColumnCheckHtml(portal)); }
public static string BuildColumnCheckHtml(IDataExportPortal portal) { StringBuilder sb = new StringBuilder(); //================ Output Javascript ==================// sb.Append(@"<script type=""text/javascript""> var wbexp={ config:{ //处理请求的Url地址 urlHandler:'', //处理生成Json的对象 jsonHandler:null, params:null, page:null }, doExport:function(portal){ var data=this.config.jsonHandler.toQueryString('ui-export'); if(this.config.params==null){ var regMatch=/(\?|&)params=(.+)&*/i.exec(location.search); this.config.params=regMatch?regMatch[2]:''; } if(!this.config.page){ this.config.page=document.getElementById('export_iframe'); } this.config.page.src=this.config.urlHandler + (this.config.urlHandler.indexOf('?')==-1?'?':'&') + 'portal=' + portal + '&' + data + '¶ms=' + this.config.params; } }; </script>"); sb.Append(@"<div class=""ui-export"" id=""ui-export"">"); //====================== 导出格式 =====================// sb.Append(@"<div><strong>选择导出格式</strong></div> <ul class=""columnList""> <li class=""export_format_excel""><input checked=""checked"" field=""ExportFormat"" style=""border:none"" name=""export_format"" type=""radio"" value=""excel"" id=""export_format_excel""/> <label for=""wbexp_format_excel"">Excel文件</label> </li> <li class=""export_format_csv""><input type=""radio"" field=""ExportFormat"" style=""border:none"" name=""export_format"" value=""csv"" id=""export_format_csv""/> <label for=""wbexp_format_csv"">CSV数据文件</label> </li> <li class=""export_format_txt""><input type=""radio"" field=""ExportFormat"" style=""border:none"" name=""export_format"" value=""txt"" id=""export_format_txt""/> <label for=""wbexp_format_txt"">文本</label> </li> </ul><div style=""clear:both""></div><br />"); //====================== 导出列 =======================// if (portal.ColumnNames == null || portal.ColumnNames.Length == 0) { sb.Append("<em><strong>该导出方案不包含可选择的导出列</strong></em>"); } else { sb.Append(@"<div class=""selColumn""><strong>请选择要导出的列:</strong> <ul class=""columnList"">"); int tmpInt = 0; foreach (DataColumnMapping column in portal.ColumnNames) { sb.Append( "<li><input type=\"checkbox\" style=\"border:none\" checked=\"checked\" field=\"export_fields[") .Append(tmpInt.ToString()).Append("]\"") .Append(@" id=""export_column_") .Append(column.Field) .Append("\" value=\"").Append(column.Field) .Append("\"/><label for=\"export_column_") .Append(column.Field) .Append("\">").Append(column.Name) .Append("</label></li>"); tmpInt++; } sb.Append(@"</ul></div>"); } sb.Append(@" <iframe id=""export_iframe"" style=""display:none""></iframe> <div style=""clear:both""></div> </div>"); sb.Append(@"<input type=""button"" class=""btn_export"" onclick=""wbexp.doExport('") .Append(portal.PortalKey).Append(@"')"" value="" 导出 ""/>"); return sb.ToString(); }
public JsonResult GetExportData() { IDataExportPortal portal = ExportHelper.GetPortal(this.Request["portal"], this.Request["params"], null); return(new U1Json(portal.GetShemalAndData())); }