前后端分离,get请求导出
[HttpGet]
        public HttpResponseMessage Export(string obj)
        {
            string eventType = string.Empty;
            string exportFileName = string.Empty;
//查询出要导出数据json字符串
            var resultValue = Query(obj);
//解析join字符串到对象
            var result = JsonConvert.DeserializeObject<Data>(resultValue);
//解析join字符串到对象
            //JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            //javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
            //var result = javaScriptSerializer.Deserialize<Data>(resultValue);
if (result.Data.PageDatas.Count < 50000)
            {
                var list = result.Data.PageDatas;
                var res = ExcelImport(list, eventType.ToString(), exportFileName);
                return res;
            }
            else
            {
                var message = "数据太多,无法导出数据";
                string str = ApiResultHelper.GetMessage(message.ToString());
                return new HttpResponseMessage { Content = new StringContent(str, Encoding.UTF8, "application/json") };
                //return new HttpResponseMessage(HttpStatusCode.NoContent);
            }
        }
protected HttpResponseMessage ExcelImport(List<PageData> PageDatas)
        {
            DataTable dt = new DataTable();
#region DataTable数据
dt.Columns.Add("事件名称");
            dt.Columns.Add("设备名称");
            dt.Columns.Add("事件类型");
            dt.Columns.Add("发生时间");
int rowIndex = 0;
            foreach (var item in PageDatas)
            {
                dt.Rows.Add();
                dt.Rows[rowIndex][0] = item.EventName;
                dt.Rows[rowIndex][1] = item.DeviceName;
                dt.Rows[rowIndex][2] = item.RecordName;
                dt.Rows[rowIndex][3] = item.IssueTime;
                rowIndex++;
            }
#endregion DataTable数据
var file = ExcelStream(dt);
            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
            result.Content = new StreamContent(file);
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
            result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
            result.Content.Headers.ContentDisposition.FileName = exportFileName + ".xls";
            return result;
        }
private MemoryStream ExcelStream(DataTable dt)
        {
            //var list = dc.v_bs_dj_bbcdd1.Where(eps).ToList();
            HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet1 = workbook.CreateSheet("Sheet1");
//1-创建首行
            IRow headRow = sheet1.CreateRow(0);
            //1.1-设置首行样式
            IFont font = workbook.CreateFont();
            font.Boldweight = (short)FontBoldWeight.Bold;   //字体加粗
            ICellStyle headCellStyle = workbook.CreateCellStyle();
            headCellStyle.SetFont(font);
            headCellStyle.Alignment = HorizontalAlignment.Center;  //字体居中
            //1.2-设置首行标题
            int rowIndex = 0;
            foreach (DataColumn dc in dt.Columns)
            {
                ICell cell = headRow.CreateCell(rowIndex);
                cell.SetCellValue(dc.ColumnName);
                cell.CellStyle = headCellStyle;
                rowIndex++;
            }
//2.1-内容行样式
            ICellStyle contentCellStyle = workbook.CreateCellStyle();
            contentCellStyle.Alignment = HorizontalAlignment.Center;  //字体居中
            contentCellStyle.WrapText = true;  //自动换行
int rowCount = 0;
            if (dt != null)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    IRow row = sheet1.CreateRow(rowCount + 1);
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        ICell cell = row.CreateCell(i);
                        cell.SetCellValue(dr[i].ToString());
                        cell.CellStyle = contentCellStyle;
                    }
                    rowCount++;
                }
            }
for (var i = 1; i < dt.Rows.Count; i++)
            {
                IRow row = sheet1.CreateRow(i + 1);
                //设置内容
                for (var j = 0; j < dt.Columns.Count; j++)
                {
                    ICell cell = row.CreateCell(j);
                    cell.SetCellValue(dt.Rows[i][j].ToString());
                    cell.CellStyle = contentCellStyle;
                }
            }
            //3-自动列宽-根据内容长度自动展开
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                sheet1.AutoSizeColumn(i);
            }
MemoryStream file = new MemoryStream();
            workbook.Write(file);
            //这句代码非常重要,如果不加,会报:打开的EXCEL格式与扩展名指定的格式不一致
            file.Seek(0, SeekOrigin.Begin);
return file;
        }
前后端分离,get请求导出的更多相关文章
- Springboot+vue前后端分离项目,poi导出excel提供用户下载的解决方案
		因为我们做的是前后端分离项目 无法采用response.write直接将文件流写出 我们采用阿里云oss 进行保存 再返回的结果对象里面保存我们的文件地址 废话不多说,上代码 Springboot 第 ... 
- 谈谈渲染,玩玩nginx——前后端分离,转发请求到Tomcat的尝试
		一.谈谈"渲染" 相信好多人都挺听过"渲染"这个词,但不清楚它是什么意思?前端开发以为这是后端的活儿,后端开发以为是前端的事儿,推着推着就不了了之.其实渲染很简 ... 
- laravel5.7 前后端分离开发 实现基于API请求的token认证
		最近在学习前后端分离开发,发现 在laravel中实现前后台分离是无法无法使用 CSRF Token 认证的.因为 web 请求的用户认证是通过Session和客户端Cookie的实现的,而前后端分离 ... 
- Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置
		前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources,Vue2.0 之后,官方不再建议使用 vue-resources ,这个 ... 
- 解决前后端分离的“两次请求”引出的Web服务器跨域请求访问问题的解决方案
		在前后端分离的项目中,前端和后端可能是在不同的服务器上,也可以是Docker上,那就意味着前端请求后端Restful接口时,存在跨域情况. 后端在做了通用的跨域资源共享CORS设置后,前端在做ajax ... 
- Spring Security 前后端分离登录,非法请求直接返回 JSON
		hello 各位小伙伴,国庆节终于过完啦,松哥也回来啦,今天开始咱们继续发干货! 关于 Spring Security,松哥之前发过多篇文章和大家聊聊这个安全框架的使用: 手把手带你入门 Spring ... 
- ASP.NET WebApi+Vue前后端分离之允许启用跨域请求
		前言: 这段时间接手了一个新需求,将一个ASP.NET MVC项目改成前后端分离项目.前端使用Vue,后端则是使用ASP.NET WebApi.在搭建完成前后端框架后,进行接口测试时发现了一个前后端分 ... 
- Django前后端分离跨域请求问题
		一.问题背景 之前使用django+vue进行前后端分离碰到跨域请求问题,跨域(域名或者端口不同)请求问题的本质是由于浏览器的同源策略导致的,当请求的响应不是处于同一个域名和端口下,浏览器不会接受响应 ... 
- 利用Nginx轻松实现Ajax的跨域请求(前后端分离开发调试必备神技)
		利用Nginx轻松实现浏览器中Ajax的跨域请求(前后端分离开发调试必备神技) 前言 为什么会出现跨域? 造成跨域问题的原因是因为浏览器受到同源策略的限制,也就是说js只能访问和操作自己域下的资源,不 ... 
- 前后端分离开发,跨域时jsessionid每次请求都变化的问题解决方法
		本解决方法的使用前提是,前端开发使用的是vue,后端使用java(SpringMVC) 在前后端分离开发过程中,可能会出现因跨域而导致每次请求的jsessionid不一致的情况 解决方法: 前端:要在 ... 
随机推荐
- Hive 教程(七)-DML基础
			DML,Hive Data Manipulation Language,数据操作语言: 通俗理解就是数据库里与数据的操作,如增删改查,统计汇总等: Loading files into tables ... 
- JavaScript快速排序法实现数组排序
			大致分三步: 1.找基准(一般是以中间项为基准) 2.遍历数组,小于基准的放在left,大于基准的放在right 3.递归 var arr = [10,8,6,9,1,7,1,13,5,1,9]; / ... 
- 10 Python之文件操作
			1.文件操作 f = open(文件路径, mode="模式", encoding="编码") f: 文件句柄 文件的路径: 相对路径 相对于当前程序所在的文件 ... 
- 11 Scrapy框架之递归解析和post请求
			一.递归爬取解析多页页面数据 - 需求:将糗事百科所有页码的作者和段子内容数据进行爬取切持久化存储 - 需求分析:每一个页面对应一个url,则scrapy工程需要对每一个页码对应的url依次发起请求, ... 
- node + express搭建api项目
			express框架 描述 express是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能. 安装 // 1.使用npm淘宝镜像--cn ... 
- CentOS MySql5.6编译安装
			生产环境中,mysql服务器上边最好什么服务都不要再安装!!! 一.准备工作: # yum -y install make gcc-c++ cmake bison-devel ncurses-deve ... 
- Delphi 变量的作用域
- linux 用户及文件权限管理
			Linux 是一个可以实现多用户登陆的操作系统,比如“李雷”和“韩梅梅”都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是放在同 ... 
- Python测试开发必知必会-PEP
			互联网发展了许多年,不仅颠覆了很多行业,还让很多职位有了更多的用武之地.产品发布迭代速度不断加快,让测试开发这个岗位简直火得不要不要的. Python语言,作为一种更接近人来自然语言的开发语言,以简洁 ... 
- Cuda9.0安装
			CUDA 9.0安装笔记 最近实验室新购买两块K80的GPU.作为好奇的小猪,当然会自报奋勇去配置环境.在这篇博客中将会介绍在centos7下配置CUDA 9.0的步骤. 1. 什么是CUDA? 引用 ... 
