예제 #1
0
        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));
        }
예제 #2
0
        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);
        }
예제 #3
0
        public static string Setup(string portal)
        {
            //todo: need refactor   export manager
            IDataExportPortal dp = ExportManager.GetPortal(portal);

            return(WebExportOptionUIBuilder.BuildColumnCheckHtml(dp));
        }
예제 #4
0
        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()));
        }
예제 #5
0
파일: ExportUtil.cs 프로젝트: zyuhua/devfw
        /// <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);
        }
예제 #6
0
        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));
        }
예제 #7
0
        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);
        }
예제 #8
0
        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));
        }
예제 #9
0
파일: ExportUtil.cs 프로젝트: zyuhua/devfw
        /// <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);
        }
예제 #10
0
        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 }));
        }
예제 #11
0
        public static string Setup(string portal)
        {
            IDataExportPortal dp = ExportItemManager.GetPortal(portal);

            return(WebExportOptionUIBuilder.BuildColumnCheckHtml(dp));
        }
예제 #12
0
        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
                                             + '&params=' + 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());
        }
예제 #13
0
        public static string BuildColumnCheckHtml(string exportPortalClassFullName)
        {
            IDataExportPortal portal = ExportUtil.GetPortal(exportPortalClassFullName);

            return(BuildColumnCheckHtml(portal));
        }
예제 #14
0
        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
                                             + '&params=' + 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();
        }
예제 #15
0
        public JsonResult GetExportData()
        {
            IDataExportPortal portal = ExportHelper.GetPortal(this.Request["portal"], this.Request["params"], null);

            return(new U1Json(portal.GetShemalAndData()));
        }