webapi到处excel

最近项目用的webapi前几天做了个导出excel功能,给大家分享下,自己也记录下。。。

在用的过程中,可以直接请求就可以得到下载的excel文件,在实际的项目中可以通过js打开新页面,encodeURI请求,得到下载excel

NPOI类库的引用,可以直接通过vs直接下载安装

 1  WebApplication3.Controllers
 2 {
 3     public class SomeModel { public int id { get; set; } }//用于接收传递过来的参数
 4     public class DownLoadController : ApiController
 5     {
 6         // GET: DownLoad
 7         public string Index()
 8         {
 9             return "";
10         }
11
12         //导出excel功能控制器
13         //[Authorize]
14         [HttpGet]
15         [ActionName("Export")]//控制器名称重新定义,加上可以直接请求Exprot
16         public HttpResponseMessage PostExportData(SomeModel model)
17         {
18             var file = ExcelStream();
19             //string csv = _service.GetData(model);
20             HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
21             result.Content = new StreamContent(file);
22             //a text file is actually an octet-stream (pdf, etc)
23             //result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
24
25             result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
26             //we used attachment to force download
27             result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
28             result.Content.Headers.ContentDisposition.FileName = "file.xls";
29             return result;
30         }
31
32         //得到excel文件流
33         private System.IO.Stream ExcelStream()
34         {
35             //var list = dc.v_bs_dj_bbcdd1.Where(eps).ToList();
36             HSSFWorkbook hssfworkbook = new HSSFWorkbook();
37
38             ISheet sheet1 = hssfworkbook.CreateSheet("保税订单");
39
40
41             IRow rowHeader = sheet1.CreateRow(0);
42
43             //生成excel标题
44             rowHeader.CreateCell(0).SetCellValue("汇通单号");
45             rowHeader.CreateCell(1).SetCellValue("单据日期");
46             rowHeader.CreateCell(2).SetCellValue("订单号");
47             rowHeader.CreateCell(3).SetCellValue("收件人");
48             rowHeader.CreateCell(4).SetCellValue("收件人电话");
49             rowHeader.CreateCell(5).SetCellValue("收件人地址");
50             rowHeader.CreateCell(6).SetCellValue("物流公司");
51             rowHeader.CreateCell(7).SetCellValue("运单号");
52             rowHeader.CreateCell(8).SetCellValue("数量");
53             rowHeader.CreateCell(9).SetCellValue("状态");
54
55             //生成excel内容
56             //for (int i = 0; i < list.Count; i++)
57             //{
58             //    NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 1);
59             //    rowtemp.CreateCell(0).SetCellValue(list[i].bh_user);
60             //    rowtemp.CreateCell(1).SetCellValue(list[i].rq.Value.ToString("yyyy-MM-dd HH:mm:dd"));
61             //    rowtemp.CreateCell(2).SetCellValue(list[i].bh_khdd);
62             //    rowtemp.CreateCell(3).SetCellValue(list[i].re_name);
63             //    rowtemp.CreateCell(4).SetCellValue(list[i].re_tel);
64             //    rowtemp.CreateCell(5).SetCellValue(list[i].re_fulladdress);
65             //    rowtemp.CreateCell(6).SetCellValue(list[i].bm_kdgs);
66             //    rowtemp.CreateCell(7).SetCellValue(list[i].kddh);
67             //    rowtemp.CreateCell(8).SetCellValue((int)list[i].sl_total);
68             //    rowtemp.CreateCell(9).SetCellValue(list[i].mc_state_dd);
69             //}
70
71             for (int i = 0; i < 10; i++)
72                 sheet1.AutoSizeColumn(i);
73
74             MemoryStream file = new MemoryStream();
75             hssfworkbook.Write(file);
76             file.Seek(0, SeekOrigin.Begin);
77
78             return file;
79
80             //return File(file, "application/vnd.ms-excel", "保税订单.xls");
81         }
82
83     }
84 }
时间: 2024-08-06 11:58:32

webapi到处excel的相关文章

C#中到处Excel表

平常编程中,我们经常遇到需要到处Excel表的地方,下面是小编的总结,希望对大家有用. Scoresmr score = new Scoresmr(); //创建Scoresmr对象 DataSet ds = score.QueryScore(); //调用QueryScore方法查询成绩并将查询结果放到DataSet数据集中 DataTable DT = ds.Tables[0]; //生成将要存放结果的Excel文件的名称 string NewFileName = DateTime.Now.

.NET WebAPI生成Excel

Webform中,生成Excel,一般是设置response.Content.Headers.ContentType输出类型为application/vnd.ms-excel,思路都是这样的. 每一个API方法都这样做一下,也是可以的.参考:http://www.cnblogs.com/jizhong/p/3592088.html 更好的做法是,客户端请求的时候,设置Requst.Header的Accept:application/vnd.ms-excel.目的:客户端设置了什么类型,服务端针对

js到处excel

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>js把table导出xls</title> </head> <body> <table id="excel" width='100%' b

webapi 导入excel处理数据

参考资料     https://blog.csdn.net/pan_junbiao/article/details/82935992 https://www.cnblogs.com/dansediao/p/5482467.html https://www.cnblogs.com/shiyh/p/7478241.html excel转成datatable工具类 using System; using System.Collections.Generic; using System.Data; u

linux导出Excel The maximum column width for an individual cell is 255 characters

linux环境到处Excel报错: The maximum column width for an individual cell is 255 characters 解决方案: for (int i = 0; i < headerList.size(); i++) { int colWidth = sheet.getColumnWidth(i)*2; if(colWidth<255*256){ sheet.setColumnWidth(i, colWidth < 3000 ? 3000

基于SSM的POI导入导出Excel实战第二篇-导出EXCEL

业务需求:这里我以产品信息为例,用于POI导入导出Excel实战的操作对象 需求分析:我们要导出的数据格式比较简单,其实就是待导出的表(视图)的数据,如下图所示: 实现思路:A.会发现待导出的数据列表是一个矩阵式的格式,即二维的形式 B.其中的头部id name unit price stock 等字段field是固定不变的,将会充当excel的头部 C.以数据行的角度观察数据列表,会发现每一行每一列的值都是B所指的那些字段一一对应的取值value D.由此可以得出这些数据组织是由每一行数据组成

PowerDesigner 中模型设计导出Excel表格

今天项目做设计,客户要看数据设计,需要到处Excel表格.去网上搜索下,把使用总结如下: 已经完成设计的pd设计 打开pd,快捷键Ctrl + Shift + X或者Tools>Exectue Commands > Edit/Run Script 代码一:到处到单个excel中 推荐使用这个 '****************************************************************************** Option Explicit Dim ro

表格布局----基于bootstrap样式 布局

在实际开发中,我们通过菜鸟教程复制的表格往往不能满足我们的开发需求,样式很难看,而且不能自适应,尤其是需要到处Excel的样式,感觉非常糟糕,这次我就写了一个表单,不足之处,希望大神们多多指教: 代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>查询详情</title> 5 <meta name="keywords" content=""/>

JAVA、android中常用的一些jar包的作用

正文: 这里主要介绍的是hibernate使用到的.jar Hibernate一共包括了23个jar包,令人眼花缭乱.本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍. 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: hibernate2.jar: Hibernate的库,没有什么可说的,必须使用的jar包 cglib-asm.jar: CGLIB库,Hibernate用它来