asp.net core webapi 生成导出excel
/// <summary>
/// 下载订单
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[Route("export")]
[JdyAuthorize(Roles = "ordermanager")]
[HttpGet]
public IActionResult DownloadOrders([FromQuery]OrderSearchModel model)
{
//var currentUseId = User.FindFirst("sub").Value;
var currentUseId = "test"; var rootPath = _hostingEnvironment.ContentRootPath + "/orderExcels/";
if (System.IO.Directory.Exists(rootPath) == false)
System.IO.Directory.CreateDirectory(rootPath); var newFile = rootPath + "/orderExcels" + currentUseId + ".xls";
if (System.IO.File.Exists(newFile))
{
System.IO.File.Delete(newFile);
} var result = _orderReadService.GetOrderListAsync(
0, 1000, model.OrderNo,
model.OrderStatus, model.CustomerManagerId, model.StartTime,
model.EndTime, model.ProductId, model.ProductVariantId,
model.OrderClaimedStatus, model.TradeType, model.ChannelId, string.Empty).Result; if (result.Items.Count() == 0)
return BadRequest(); using (var fs = new FileStream(newFile, FileMode.Create, FileAccess.Write))
{ IWorkbook workbook = new XSSFWorkbook(); var sheet = workbook.CreateSheet("orders"); var header = sheet.CreateRow(0);
header.CreateCell(0).SetCellValue("交易时间");
header.CreateCell(1).SetCellValue("产品");
header.CreateCell(2).SetCellValue("类型");
header.CreateCell(3).SetCellValue("公司");
header.CreateCell(4).SetCellValue("订单号");
header.CreateCell(5).SetCellValue("渠道");
header.CreateCell(6).SetCellValue("来源");
header.CreateCell(7).SetCellValue("客户经理");
header.CreateCell(8).SetCellValue("状态");
header.CreateCell(9).SetCellValue("支付方式");
header.CreateCell(10).SetCellValue("应付");
header.CreateCell(11).SetCellValue("实付"); var rowIndex = 1;
foreach (var item in result.Items)
{
var datarow = sheet.CreateRow(rowIndex); datarow.CreateCell(0).SetCellValue(item.OrderCreateTime.ToString("yyyy-MM-dd HH:mm:ss"));
datarow.CreateCell(1).SetCellValue(item.ProductVariantName);
datarow.CreateCell(2).SetCellValue(item.TradeType.GetEnumDescribe());
datarow.CreateCell(3).SetCellValue(item.CustomerName);
datarow.CreateCell(4).SetCellValue(item.OrderNo); datarow.CreateCell(5).SetCellValue(item.ChannelName);
datarow.CreateCell(6).SetCellValue("阿里云");
datarow.CreateCell(7).SetCellValue(item.CustomerManager);
datarow.CreateCell(8).SetCellValue(item.OrderStatus.GetEnumDescribe());
datarow.CreateCell(9).SetCellValue("其他"); datarow.CreateCell(10).SetCellValue(item.ChannelPaymentOrderTotal.ToString("#0.00"));
datarow.CreateCell(11).SetCellValue(item.ChannelActualOrderTotal.ToString("#0.00")); rowIndex++;
} workbook.Write(fs);
} var memory = new MemoryStream();
using (var stream = new FileStream(newFile, FileMode.Open))
{
stream.CopyTo(memory);
}
memory.Position = 0; return File(memory, "application/vnd.ms-excel", "order.xlsx");
}
用到了 dotnetcore.NPOI (from nuget).
参考了
http://www.emanuelebartolesi.com/asp-net-core-webapi-download-upload-files/
以及一些补充
csv的导出 https://stackoverflow.com/questions/47423563/how-can-i-return-a-csv-file-in-asp-net-core-2
前后端分离,导出数据为文件或下载文件,前端如何处理后端返回的数据
asp.net core webapi 生成导出excel的更多相关文章
- 第二十节:Asp.Net Core WebApi生成在线文档
一. 基本概念 1.背景 使用 Web API 时,了解其各种方法对开发人员来说可能是一项挑战. Swagger 也称为OpenAPI,解决了为 Web API 生成有用文档和帮助页的问题. 它具有诸 ...
- Asp.net core WebApi 使用Swagger生成帮助页
最近我们团队一直进行.net core的转型,web开发向着前后端分离的技术架构演进,我们后台主要是采用了asp.net core webapi来进行开发,开始每次调试以及与前端人员的沟通上都存在这效 ...
- ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
- ASP.NET Core WebApi使用Swagger生成api
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
- ASP.NET Core WebApi使用Swagger生成api说明文档
1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...
- Asp.net core WebApi 使用Swagger生成帮助页实例
最近我们团队一直进行.net core的转型,web开发向着前后端分离的技术架构演进,我们后台主要是采用了asp.net core webapi来进行开发,开始每次调试以及与前端人员的沟通上都存在这效 ...
- asp.net core webapi 使用ef 对mysql进行增删改查,并生成Docker镜像构建容器运行
1.构建运行mysql容器,添加数据库user 参考Docker创建运行多个mysql容器,地址 http://www.cnblogs.com/heyangyi/p/9288402.html 添加us ...
- 【转】ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
原文链接:https://www.cnblogs.com/yilezhu/p/9241261.html 引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必 ...
- ASP.NET Core WebApi使用Swagger生成API说明文档【xml注释版】
⒈新建ASP.NET Core WebAPi项目 ⒉添加 NuGet 包 Install-Package Swashbuckle.AspNetCore ⒊Startup中配置 using System ...
随机推荐
- leetcode第一天-merge two binary trees
有段时间没有写代码了,脑子都生锈了,今后争取笔耕不辍(立flag,以后打脸) 随机一道Leecode题, Merge Two Binary Trees,题目基本描述如下: Given two bina ...
- SpringMVC拦截静态资源的处理办法
SpringMVC拦截静态资源导致 JS CSS 无法加载 可以在配置文件中加入以下代码 <mvc:resources location="/statices/" m ...
- 数据结构(二): 轻量级键值对 SparseArray
SparseArray是Android framework中提供的轻量级的键值对数据结构,我们知道空间和效率从来都是相悖的,SparseArray的实现正是以时间来换取空间效率,适合小规模数据的存储. ...
- Nginx 在 Linux 上的安装和配置
一.Nginx的安装 1.单台Nginx的安装 Nginx在Linux上的安装可以参考这篇博客:http://blog.csdn.net/molingduzun123/article/details/ ...
- Inotify+Rsync实现Linux服务器文件同步
做这个功能的时候遇到了好多坑,在此感谢一下这篇博客 http://kerry.blog.51cto.com/172631/734087/ ,大家参照这篇博客就能实现该功能. 另外如果想详细了解一下的 ...
- OAuth2简易实战(三)-JWT
1. OAuth2简易实战(三)-JWT 1.1. 与OAuth2授权码模式差别 授权服务器代码修改 @Configuration @EnableAuthorizationServer public ...
- fescar分布式事务(概览)
1. fescar分布式事务(概览) 1.1. 概述 Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 1.2 ...
- Express中间件的意思 next()的方法
一.什么是express?Express是一个简洁.灵活的noode.jsWeb应用开发框架,它提供一系列强大的特性,帮助你创建各种Web和移动设备应用.Express项目的底层由许多的中间件在协同工 ...
- 吐血整理 20 道 Spring Boot 面试题,我经常拿来面试别人!
面试了一些人,简历上都说自己熟悉 Spring Boot, 或者说正在学习 Spring Boot,一问他们时,都只停留在简单的使用阶段,很多东西都不清楚,也让我对面试者大失所望. 下面,我给大家总结 ...
- iOS学习——iOS开发小知识点集合
在iOS学习和开发过程中,经常会遇到一些很小的知识点和问题,一两句话就可以解释清楚了,这样的知识点写一篇随笔又没有必要,但是又想mark一下,以备不时之需,所以就有了本文.后面遇到一些小的知识点会不断 ...