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 ...
随机推荐
- C# 自动程序 windows 无法启动 XXXX 服务 错误5 拒绝访问
遇到过两次 这样的问题了,所以记录一下 原因可能是服务所在文件的目录权限不够 解决方法: 1是查看服务对应的程序所在的目录 2是设置目录的安全权限 右击–属性–安全–添加相应的帐号,给予除完全控制外的 ...
- @Slf4j注解实现日志输出
自己写日志的时候,肯定需要: private final Logger logger = LoggerFactory.getLogger(LoggerTest.class); 每次写新的类,就需要重新 ...
- Promise实践
一.概念 Promise是异步编程的解决方案之一,与事件驱动+回调函数并列. Promise是专门为异步编程设计的封闭的一次性用品,封闭体现在只有异步操作的结果能改变其状态,其他任何操作都不能改变其状 ...
- 用Ubuntu快速安装Jenkins
一.安装操作系统,安装前准备. 1.操作系统:Ubuntu 18.04 (大家都知道Ubuntu的特点,在线安装,方便很多) 2.apt源.apt源在官网上面分很多种,每个版本的源不一样,如果是其他版 ...
- python jieba库的基本使用
第一步:先安装jieba库 输入命令:pip install jieba jieba库常用函数: jieba库分词的三种模式: 1.精准模式:把文本精准地分开,不存在冗余 2.全模式:把文中所有可能的 ...
- 【sql注入】浅谈JSP安全开发之SQL注入
[sql注入]浅谈JSP安全开发之SQL注入 本文转自:i春秋社区 前言不管是用什么语言编写WEB应用程序,他们都或多或少有一些地方存在漏洞.如果你想知道漏洞的运行原理,和防御方案,那么请看完本篇文章 ...
- 继承user表需要配置
AUTH_USER_MODEL = 'users.User' (应用名.模型类名)
- 文本编辑器 EditPlus 的激活与设置
说明 1.EditPlus是Windows的文本编辑器,具有内置的FTP,FTPS和sftp功能.虽然它可以作为一个很好的记事本替代品,但它也为网页作者和程序员提供了许多强大的功能. 2.语法高亮显示 ...
- 第50节:Java的当中的泛型
Java当中的泛型 01 import java.util.ArrayList; import java.util.List; public class Demo{ public static voi ...
- webpack入门-个人学习资源收集
本来是想自己写哈个人学习webpack心德的,不过网上现在已经有各种比较好的,详细的入门或者深入资源了. 所以我就简单总结了一下,我在入门webpack时看的一些博客和文档,以及顺道看到的一些觉得也应 ...