前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Magicodes.IE.AspNetCore之一行代码多格式导出

Magicodes.IE.AspNetCore之一行代码多格式导出

作者头像
心莱科技雪雁
发布于 2021-04-30 03:35:30
发布于 2021-04-30 03:35:30
31900
代码可运行
举报
文章被收录于专栏:雪雁的专栏雪雁的专栏
运行总次数:0
代码可运行

主要步骤


1.安装包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Install-Package Magicodes.IE.AspNetCore


2.开始配置

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void Configure(IApplicationBuilder app)
{
    app.UseRouting();
    app.UseMagiCodesIE();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  public void ConfigureServices(IServiceCollection services)
            {
                services.AddControllers(options=>options.Filters.Add(typeof(MagicodesFilter)));
            }

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[HttpGet("excel")]
[Magicodes(Type = typeof(ExportTestDataWithAttrs))]
public List<ExportTestDataWithAttrs> Excel()
{
    return GenFu.GenFu.ListOf<ExportTestDataWithAttrs>(100);
}

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       /// <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文件那么我们也是同样的操作如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[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进行指定模板地址即可

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
       [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如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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方法中添加如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  c.OperationFilter<AddRequiredHeaderParameter>();


Reference

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

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

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

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

原文作者:【HueiFeng】

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 麦扣聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Magicodes.IE在.NET Core中通过请求头导出多种格式文件
在2.2里程碑中我们增加了一些新的功能,正如标题所写通过请求头进行导出我们不同格式的文件.下面我们来看一下如何使用.通过这种方式无论是对我们的数据多用途,还是说对我们的数据校验都做到了轻松易配。
心莱科技雪雁
2020/06/22
8760
Magicodes.IE基础教程之导出Pdf
PdfExporterAttribute特性用于设置Pdf导出的总体设置,比如方向、纸张等。主要包含如下设置:
心莱科技雪雁
2020/03/04
8030
Magicodes.IE基础教程之导出Pdf
ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
通过上述代码我们实现了一个简单的Pdf文件导出,也许这样无法达到我们的要求,我们需要自定义标题,那么请看如下代码
HueiFeng
2020/01/21
2.3K0
Magicodes.IE之快速导出Excel
总是有很多朋友咨询Magicodes.IE如何基于ASP.NET Core导出Excel,出于从框架的体验和易用性的角度,Magicodes.IE决定对Excel的导出进行独立封装,以便于大家更易于使用,开箱即用。
心莱科技雪雁
2021/08/20
6800
使用Magicodes.IE快速导出Excel
总是有很多朋友咨询Magicodes.IE如何基于ASP.NET Core导出Excel,出于从框架的体验和易用性的角度,决定对Excel的导出进行独立封装,以便于大家更易于使用,开箱即用。
雪雁-心莱科技
2021/08/10
1K0
Magicodes.IE之花式导出
Magicodes.IE是一个导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf、Csv和Html。在本篇教程,笔者将讲述如何使用Magicodes.IE进行花式导出。
雪雁-心莱科技
2020/09/29
7320
Magicodes.IE之花式导出
Magicodes.IE 2.2发布
导入导出通用库,支持DTO导入导出以及动态导出,支持Excel、Word、PDF、CSV和HTML。已加入ncc开源组织.
心莱科技雪雁
2020/05/25
1.3K0
Magicodes.IE 2.2发布
ASP.NET 开源导入导出库Magicodes.IE 完成Csv导入导出
对于csv导入我们可以通过,ImporterHeader Name属性去对应我们的Dto属性.并且可以通过ValueMapping对枚举类型进行相关的映射,并向我们返回相对应的值
HueiFeng
2020/05/18
1.2K0
Magicodes.IE 2.2发布
导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf、Csv和Html。已加入NCC开源组织。
雪雁-心莱科技
2020/05/26
6790
开源导入导出通用库Magicodes.ExporterAndImporter发布
Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨。
雪雁-心莱科技
2019/09/08
8040
Magicodes.IE基础教程之导出Excel
本教程主要说明如何使用Magicodes.IE.Excel完成学生数据的Excel导出。
心莱科技雪雁
2020/02/26
9970
Magicodes.IE之导入导出筛选器
Magicodes.IE是一个导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf、Csv和Html。在本篇教程,笔者将讲述如何使用Magicodes.IE的导入导出筛选器。在开始之前,我们需要先了解Magicodes.IE目前支持的筛选器:
雪雁-心莱科技
2020/09/25
1K0
Magicodes.IE之导入导出筛选器
Magicodes.IE 2.5版本发布
今天我们发布了2.5版本,这当然也离不开大家对Magicodes.IE的支持,今天我也是跟往常一样列举了该版本一些重要的更新内容。
心莱科技雪雁
2020/12/09
7720
Magicodes.IE 2.5版本发布
Magicodes.IE 2.5.4.2发布
Magicode.IE,导入导出通用库,支持Dto导入导出、模板导出、花式导出以及动态导出,支持Excel、Csv、Word、Pdf和Html。
心莱科技雪雁
2021/07/01
1.5K0
Excel模板导出之导出教材订购表
本教程主要说明如果使用Magicodes.IE.Excel完成教材订购表的Excel模板导出。
心莱科技雪雁
2020/01/13
7620
Excel模板导出之导出教材订购表
Magicodes.IE 2.0发布
Magicodes.IE是我们维护的开源的导入导出通用库,去年年底已加入NCC开源组织。
心莱科技雪雁
2020/02/19
4890
Magicodes.IE 2.0发布
Magicodes.IE Excel合并行数据导入教程
上述代码大家可以在单元测试MergeRowsImportTest中找到。调试运行后可以看到如下图所示:
心莱科技雪雁
2021/03/09
6750
相关推荐
Magicodes.IE在.NET Core中通过请求头导出多种格式文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验