主要步骤


1.安装包

Install-Package Magicodes.IE.AspNetCore

2.开始配置

在Startup.cs的Configure()方法中,在UseRouting()中间件之后,注册如下中间件

public void Configure(IApplicationBuilder app)
{app.UseRouting();app.UseMagiCodesIE();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});
}

上面这种以中间件形式可以为我们提供导出服务,那么我们再看一下另一种方式如下所示:

  public void ConfigureServices(IServiceCollection services){services.AddControllers(options=>options.Filters.Add(typeof(MagicodesFilter)));}

上面两种方式都可以为我们提供导出服务,我们只需要对我们的控制器进行配置我们的特性,在这边呢 特性主要做的是一个标识作用,标识他的一些相关的内容数据,同时标识他可以当成文件导出。

[HttpGet("excel")]
[Magicodes(Type = typeof(ExportTestDataWithAttrs))]
public List<ExportTestDataWithAttrs> Excel()
{return GenFu.GenFu.ListOf<ExportTestDataWithAttrs>(100);
}

上面代码片段中我们标识这个类允许被导出。同时我们需要通过Type指定我们被导出类的类型。

这样填写完后我们可以通过对该地址的调用,但是注意我们必须要添加请求头以标识被导出的文件类型。如果不添加请求头,那么此处将返回的还是json格式的数据。请求头名称为Magicodes-Type

       /// <summary>///     XLSX/// </summary>internal const string XLSXHttpContentMediaType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";/// <summary>///     PDF/// </summary>internal const string PDFHttpContentMediaType = "application/pdf";/// <summary>///     DOCX/// </summary>internal const string DOCXHttpContentMediaType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";/// <summary>///     HTML/// </summary>internal const string HTMLHttpContentMediaType = "text/html";

如果说是模板导出word或者pdf甚至说html文件那么我们也是同样的操作如下所示:

[HttpGet("Word")][Magicodes(Type = typeof(ReceiptInfo), TemplatePath = ".//ExportTemplates//receipt.cshtml")]public ReceiptInfo Word(){return new ReceiptInfo{Amount = 22939.43M,Grade = "2019秋",IdNo = "43062619890622xxxx",Name = "张三",Payee = "湖南心莱信息科技有限公司",PaymentMethod = "微信支付",Profession = "运动训练",Remark = "学费",TradeStatus = "已完成",TradeTime = DateTime.Now,UppercaseAmount = "贰万贰仟玖佰叁拾玖圆肆角叁分",Code = "19071800001"};}

我们还是需要对其指定Type,然后通过TemplatePath进行指定模板地址即可

同样的我们还可以通过请求头进行标识本次请求是否是文件格式导出。

       [HttpGet("pdf")][Magicodes(Type = typeof(BatchPortraitReceiptInfoInput), TemplatePath = ".//ExportTemplates//batchReceipt.cshtml")]public BatchPortraitReceiptInfoInput Pdf(){var input = new BatchPortraitReceiptInfoInput{Payee = "湖南心莱信息科技有限公司",SealUrl =@"data:image/jpeg;base64....",LogoUrl =@"data:image/png;base64....",ReceiptInfoInputs = new List<BatchPortraitReceiptInfoDto>()};for (var i = 0; i < 500; i++)input.ReceiptInfoInputs.Add(new BatchPortraitReceiptInfoDto{Amount = 22939.43M,Grade = "2019秋",IdNo = "43062619890622xxxx",Name = "张三",PaymentMethod = "微信支付",Profession = "运动训练",Remark = "学费",TradeStatus = "已完成",TradeTime = DateTime.Now,UppercaseAmount = "贰万贰仟玖佰叁拾玖圆肆角叁分",Code = "1907180000" + i});return input;}[HttpGet("Html")][Magicodes(Type = typeof(ReceiptInfo), TemplatePath = ".//ExportTemplates//receipt.cshtml")]public ReceiptInfo Html(){return new ReceiptInfo{Amount = 22939.43M,Grade = "2019秋",IdNo = "43062619890622xxxx",Name = "张三",Payee = "湖南心莱信息科技有限公司",PaymentMethod = "微信支付",Profession = "运动训练",Remark = "学费",TradeStatus = "已完成",TradeTime = DateTime.Now,UppercaseAmount = "贰万贰仟玖佰叁拾玖圆肆角叁分",Code = "19071800001"};}

Swagger中使用

通过继承IOperationFilter接口,创建AddRequiredHeaderParameter类,添加一个header类型的参数,并且Header Name为Magicodes-Type如下所示:

 public class AddRequiredHeaderParameter : IOperationFilter{public void Apply(OpenApiOperation operation, OperationFilterContext context){if (operation.Parameters == null){operation.Parameters = new List<OpenApiParameter>();}operation.Parameters.Add(new OpenApiParameter{Name = "Magicodes-Type",In = ParameterLocation.Header,Required = false,Description = "根据HttpContentMediaType添加指定的header值,导出不同格式的文件。"});}}

然后转到ConfigureServices()方法中,在AddSwaggerGen方法中添加如下内容:

  c.OperationFilter<AddRequiredHeaderParameter>();

Reference

https://github.com/dotnetcore/Magicodes.IE

转载是一种动力 分享是一种美德

如果喜欢作者的文章,请关注【麦扣聊技术】订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文档官网:docs.xin-lai.com

原文作者:【HueiFeng】

QQ群:

编程交流群<85318032>

产品交流群<897857351>

Magicodes.IE.AspNetCore之一行代码多格式导出相关推荐

  1. 刺激!一行代码即可导出所有浏览记录

    本文含 1043 字,4 图表截屏 建议阅读 5分钟 一行Python代码即可导出多种浏览器的历史记录?就像这样???? 现在来说说原理,不管是Windows还是MAC,Chrome等浏览器的历史数据 ...

  2. EasyPOI完美实现导入导出,实用简单,一行代码即可

    开发中经常会遇到excel的处理,导入导出解析等等.正好最近在项目里面需要用到EasyPOI,非常 容易,简单上手,一行代码实现导入导出. 1.导入maven依赖 <dependency> ...

  3. 成功解决numpy.ndarray格式类型转数据为list格式数据带有中括号(一行代码搞定!)

    成功解决numpy.ndarray格式类型转数据为list格式数据带有中括号(一行代码搞定!) 目录 解决问题 解决思路 解决方法 解决问题 numpy.ndarray格式类型转数据为list格式数据 ...

  4. ieee期刊_论文绘图神器来了:哈佛博士后开源,一行代码绘制不同期刊格式图表...

    一篇论文投多个期刊,每个期刊对图表格式要求不一,同一组数据要用多种工具分别绘图. 不光是你,哈佛大学天文研究所的博士后,也不堪忍受论文重复绘图之苦. 他的解决办法是:亲自开发一个Matplotlib的 ...

  5. ieee期刊_论文绘图神器来了:一行代码绘制不同期刊格式图表,哈佛博士后开源...

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 「一篇论文投多个期刊,每个期刊对图表格式要求不一,同一组数据要用多种工具分别绘图.」 不光是你,哈佛大学天文研究所的博士后,也不堪忍受论文 ...

  6. 论文绘图神器来了:哈佛博士后开源一行代码绘制不同期刊格式图表

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:量子位 AI博士笔记系列推荐 周志华<机器学习>手推 ...

  7. Magicodes.IE.ASPNETCore之多样化接口使用

    1.安装包 Install-Package Magicodes.IE.AspNetCore 2.开始配置 在Startup.cs的Configure()方法中,在UseRouting()中间件之后,注 ...

  8. 如何通过一行代码下载B站视频?

    文章目录 如何通过一行代码下载B站视频? Step1:安装you-get Step2:下载B站视频 总结 如何通过一行代码下载B站视频? You-Get 是一个基于 Python 3 的下载工具.使用 ...

  9. 一行代码简化Python异常信息:错误清晰指出,排版简洁美观 | 开源分享

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 即使是Python,报错时也令人头大. 看着这一堆乱麻,不知道是该怀疑人生,还是怀疑自己手残. 那么,Python异常输出美化工具Prett ...

最新文章

  1. 链表问题15——将搜索二叉树转换成双向链表
  2. Python进阶6——序列操作
  3. python子进程的输出不可见_python-输出子进程调用的命令行?
  4. android从服务检查,android开发分享Android:你如何检查是否启用了特定的AccessibilityService...
  5. 添加phpiredis扩展的时候报错
  6. 华为云API Explorer开发者生态平台正式上线
  7. java如何遍历字典_Java中如何遍历Map对象的4种方法
  8. LeetCode 240. Search a 2D Matrix II
  9. CentOS 关闭蜂鸣器声音
  10. *管家病毒查杀模块逆向分析
  11. arcgis_spatialjoin
  12. Android 科大讯飞离线语音识别
  13. 服务器托管过程中勒索病毒的预防
  14. 为什么安监控需要公网ip_关于花生壳公网版和内网版应用场合的一些说明
  15. Java实现QQ邮箱验证码发送
  16. matlab小苹果,我要用计算器弹曲子,求亲们发点计算器简谱
  17. Cadence Orcad Capture主要工作窗口介绍
  18. 关于互联网公司,说几句个人感触
  19. 数据结构面试题(含答案)
  20. 单片机原理及应用 实验四 指示灯数码管的中断控制

热门文章

  1. python3常用模块_Python3 常用模块
  2. 浅谈ASP中Web页面间的数据传递
  3. laravel中使用的PDF扩展包——laravel-dompdf和laravel-snappy
  4. 用offset调用文章
  5. javascript高级程序设计 学习笔记 第五章 上
  6. js点击图片查看大图,并可以拖动,且滚动滑轮放大缩小
  7. C# winform 窗体接收命令行参数自动登录进行系统,模拟600个WCF客户端的并发压力测试...
  8. WPF企业内训全程实录(下)
  9. 棉花糖多少钱_如何在6.0棉花糖及更高版本中访问Android的正在运行的应用程序列表...
  10. file协议 控制面板_如何在Windows File Explorer导航窗格中显示控制面板和回收站