EasyUI的DataGrid直接导出Excle(也可适用于多级标题栏)

       在实际生产生活开发过程中,我们经常需要“报表”,所以很多人都喜欢用EasyUI、BootStrap等前端框架进行报表呈现,报表呈现又存在需要导出Excle文档的基本功能,我在我现在的公司,发现之前的代码,导出Excle,并不是导出的界面上你看到的,而是在后台重新查询了一遍,再通过方法生成Excle,存到某一个文件夹,再通过这个文件夹里面的文件位置,下载Excle,这个文件夹,在每次生成Excle文档的时候,都会删除一次三天前的数据,如此也没有所谓备份的需求。如此,我便有此思考:明明数据已在界面上,为何此时要多访问一次数据库,又为何无备份需求,又要在服务器上存这个文件达三天,又为何列标题格式已在前端界面做好了,还需要在后台用算法写一遍,且面对多级列标题无法实现(我是说我目前这家公司的后台方法无法实现,或许是之前没遇到这种需求,这次我遇到了),等等一系列的想法,促使我研究,如何直接将EsayUI的DataGrid表格导出来,后台不需要重新进行逻辑处理。导出全部数据,适用客户端分页的表格,毕竟数据都没在前端,怎么导出呢?

        此功能代码大体来源于网络,我个人做了些修改,并处理了其中某几处小Bug,但是大体来源于不知名的前辈,在此感谢!

        JS代码如下(下载地址:此资料因CSDN未提供删除功能,代码有更改,大家不要下载了,以我文中代码为准):

后台代码如下(C#):

 public void ProcessRequest(HttpContext context)
 {
            context.Response.ContentType = "text/plain";
            string sActionType = context.Request.Params.Get("ActionType") == null ? "" : context.Request["ActionType"].Trim();
            if (sActionType.Equals("EasyUIDataGridToExcle"))
            {
                #region 將EasyUI的DataGrid中的數據 導出Excle 
                context.Response.Clear();
                context.Response.Buffer = true;
                context.Response.Charset = "utf-8";
                context.Response.ContentEncoding = System.Text.Encoding.UTF8;
                context.Response.AppendHeader("content-disposition", "attachment;filename=\"" + HttpUtility.HtmlEncode(context.Request["txtName"] ?? DateTime.Now.ToString("yyyyMMdd")) + ".xls\"");
                context.Response.ContentType = "Application/ms-excel";
                context.Response.Write("\n\n");
                context.Response.Write("\n\n");
                context.Response.Write("\n" + context.Request["txtContent"] + "\n\n");
                context.Response.Flush();
                context.Response.End();
                #endregion
            }
}

具体调用如下:

 

效果图:

EasyUI DataGrid:

EasyUI的DataGrid直接导出Excle(也可适用于多级标题栏)_第1张图片

Excle:

 

你可能感兴趣的:(EasyUI)