专栏首页magicodesMagicodes.IE 2.2发布

Magicodes.IE 2.2发布

Magicodes.IE

导入导出通用库,支持Dto导入导出以及动态导出,支持Excel、Word、Pdf、Csv和Html。已加入NCC开源组织。

Magicodes.IE 2.0发布

Magicodes.IE 2.1发布

如何做好一个开源项目(一)

一旦成为贡献者,我们将会邀请您加入Magicodes.IE管理委员会的微信群,并拥有相关的投票权。

最新版本:2.2.0


2.2版本内容

2020.05.12

  • 【Nuget】版本更新到2.2.0
  • 【Excel模板导出】支持导出字节
  • 【文档】Magicodes.IE Csv导入导出
  • 【Excel导入导出】修复标注的添加问题
  • 【导出】ASP.NET Core Web API 中使用自定义格式化程序导出Excel、Pdf、Csv等内容 #64
  • 【导入导出】支持使用System.ComponentModel.DataAnnotations命名空间下的部分特性来控制导入导出 #63

2020.04.16

  • 【Nuget】版本更新到2.2.0-beta9
  • 【Excel模板导出】修复只存在一列时的导出 #73
  • 【Excel导入】支持返回表头和索引 #76
  • 【Excel导入导入】#63
    • 支持使用System.ComponentModel.DataAnnotations命名空间下的部分特性来控制导入导出,比如
      • DisplayAttribute
      • DisplayFormatAttribute
      • DescriptionAttribute
    • 封装简单的易于使用的单一特性,例如
      • IEIgnoreAttribute(可作用于属性、枚举成员,可影响导入和导出)

2020.04.02

  • 【Nuget】版本更新到2.2.0-beta8
  • 【Excel模板导出】支持图片 #62,渲染语法如下所示:
{{Image::ImageUrl?Width=50&Height=120&Alt=404}}
 {{Image::ImageUrl?w=50&h=120&Alt=404}}
 {{Image::ImageUrl?Alt=404}}

2020.03.29

  • 【Nuget】版本更新到2.2.0-beta7
  • 【Excel模板导出】修复渲染问题 #51

2020.03.27

  • 【Nuget】版本更新到2.2.0-beta6
  • 【Excel导入导出】修复.NET Core 2.2的包引用问题 #68

2020.03.26

  • 【Nuget】版本更新到2.2.0-beta4
  • 【Excel多Sheet导出】修复#66,并添加单元测试

2020.03.25

  • 【Nuget】版本更新到2.2.0-beta3
  • 【Excel导入】修复日期问题 #68
  • 【Excel导出】添加ExcelOutputType设置,支持输出无格式的导出。#54可以使用此方式。

2020.03.19

  • 【Nuget】版本更新到2.2.0-beta2
  • 【Excel导入】修复日期格式的导入Bug,支持DateTime和DateTimeOffset以及可为空类型,默认支持本地化时间格式(默认根据地区自动使用本地日期时间格式)
  • 【Excel导入导出】添加单元测试ExportAndImportUseOneDto_Test,对使用同一个Dto导出并导入进行测试。Issue见 #53

2020.03.18

  • 【Nuget】版本更新到2.2.0-beta1
  • 【Excel导出】添加以下API:
/// <summary>
        ///     追加集合到当前导出程序
        ///     append the collection to context
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dataItems"></param>
        /// <returns></returns>
        ExcelExporter Append<T>(ICollection<T> dataItems) where T : class;

        /// <summary>
        ///     导出所有的追加数据
        ///     export excel after append all collectioins
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        Task<ExportFileInfo> ExportAppendData(string fileName);

        /// <summary>
        ///     导出所有的追加数据
        ///     export excel after append all collectioins
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        Task<byte[]> ExportAppendDataAsByteArray();
  • 【Excel导出】支持多个实体导出多个Sheet,感谢@ccccccmd 的贡献 #pr52 ,Issue见 #50。使用代码参考,具体见单元测试(ExportMutiCollection_Test):
            var exporter = new ExcelExporter();
            var list1 = GenFu.GenFu.ListOf<ExportTestDataWithAttrs>();
            var list2 = GenFu.GenFu.ListOf<ExportTestDataWithSplitSheet>(30);
            var result = exporter.Append(list1).Append(list2).ExportAppendData(filePath);

疯狂的徽章

https://dev.azure.com/xinlaiopencode/Magicodes.IE/_build?definitionId=4&_a=summary

里程碑

#

状态

完成时间

里程碑情况

3.0

?规划中

2020-12-31

待办

2.2

☕进行中#46

2020-04-31

待办 已完成

2.1

?已完成

2020-03-15

已完成

Nuget

名称

Nuget

Magicodes.IE.Core

Magicodes.IE.Excel

Magicodes.IE.Pdf

Magicodes.IE.Word

Magicodes.IE.Html

Magicodes.IE.Csv

Magicodes.IE.AspNetCore

Magicodes Nuget包推荐

名称

说明

Nuget

GitHUb

Magicodes.WeChat.MiniProgram

小程序SDK

Magicodes.WxMiniProgram.Sdk

Magicodes.Sms.Aliyun

阿里云短信

xin-lai/Magicodes.Sms

Magicodes.Sms.Core

短信核心库

xin-lai/Magicodes.Sms

Magicodes.Sms.Aliyun.Abp

阿里云短信Abp模块

xin-lai/Magicodes.Sms

Magicodes.Storage.Core

通用存储核心库

xin-lai/Magicodes.Storage

Magicodes.Storage.AliyunOss.Core

阿里云OSS存储

xin-lai/Magicodes.Storage

Magicodes.Storage.Local.Core

本地存储

xin-lai/Magicodes.Storage

Magicodes.Storage.Tencent.Core

腾讯云存储

xin-lai/Magicodes.Storage

Magicodes.Storage.Abp.Core

通用存储ABP模块集成

xin-lai/Magicodes.Storage

Magicodes.WeChat.SDK.Core

微信SDK

xin-lai/Magicodes.WeChat.SDK

Magicodes.SwaggerUI

SwaggerUI API快速配置和分组

xin-lai/Magicodes.SwaggerUI

Magicodes.Pay.Alipay

支付宝支付库

xin-lai/Magicodes.Pay

Magicodes.Pay.Notify

支付通用回调库

xin-lai/Magicodes.Pay

Magicodes.Pay.Wxpay

微信支付库

xin-lai/Magicodes.Pay

Magicodes.Pay.Alipay.Global

国际支付宝支付库

xin-lai/Magicodes.Pay

Magicodes.Pay.Allinpay

通联支付库

xin-lai/Magicodes.Pay

Magicodes.Pay.Abp

ABP 支付通用封装库

xin-lai/Magicodes.Pay

Magicodes.Pay.Abp.Allinpay

ABP 通联支付模块

xin-lai/Magicodes.Pay

Magicodes.Pay.Abp.Wxpay

ABP 微信支付模块

xin-lai/Magicodes.Pay

Magicodes.Pay.Alipay.Global

ABP 国际支付宝模块

xin-lai/Magicodes.Pay

Magicodes.Pay.Alipay

ABP 支付宝模块

xin-lai/Magicodes.Pay

Magicodes.Abp.Castle.NLog

ABP Nlog支持模块

xin-lai/Abp.Castle.NLog

Magicodes.WxMiniProgram.Sdk

微信小程序SDK

xin-lai/Magicodes.WxMiniProgram.Sdk

Magicodes.WxMiniProgram.Sdk.Abp

微信小程序SDK Abp模块

xin-lai/Magicodes.WxMiniProgram.Sdk

Magicodes.Dingtalk.SDK

钉钉SDK

xin-lai/Magicodes.Dingtalk.SDK

Magicodes.DynamicSqlApi.Core

根据SQL自动解析生成动态API

Magicodes.DynamicSqlApi

Magicodes.DynamicSqlApi.All

根据SQL自动解析生成动态API

Magicodes.DynamicSqlApi

Magicodes.DynamicSqlApi.CsScript

根据SQL自动解析生成动态API

Magicodes.DynamicSqlApi

Magicodes.DynamicSqlApi.Dapper

根据SQL自动解析生成动态API

Magicodes.DynamicSqlApi

Magicodes.DynamicSqlApi.SqlServer

根据SQL自动解析生成动态API

Magicodes.DynamicSqlApi

注意

  • Excel导入不支持“.xls”文件,即不支持Excel97-2003。
  • 如需在Docker中使用,请参阅文档中的《Docker中使用》一节。
  • 相关功能均已编写单元测试,在使用的过程中可以参考单元测试。

教程

  1. 基础教程之导入学生数据点此访问国内文档
  2. 基础教程之导出Excel (点此访问国内文档)
  3. 基础教程之导出Pdf收据 (点此访问国内文档)
  4. 在Docker中使用
  5. 动态导出(待补充)
  6. 多Sheet导入(待补充)
  7. Csv导入导出
  8. Excel图片导入导出 (点此访问国内文档)
  9. Excel模板导出之导出教材订购表点此访问国内文档
  10. 进阶篇之导入导出筛选器(待补充)
  11. Excel导出多个实体(待补充)

其他教程见下文或单元测试

更新历史见下文。

特点

  • 需配合相关导入导出的DTO模型使用,支持通过DTO以及相关特性控制导入导出。配置特性即可控制相关逻辑和显示结果,无需修改逻辑代码;
  • 支持各种筛选器,以便支持多语言、动态控制列展示等场景,具体使用见单元测试:
    • 导入列头筛选器(可动态指定导入列、导入的值映射关系)
    • 导出列头筛选器(可动态控制导出列,支持动态导出(DataTable))
    • 导入结果筛选器(可修改标注文件)
  • 导出支持文本自定义过滤或处理;
  • 导入支持中间空行自动跳过;
  • 导入支持自动根据 DTO 生成导入模板,针对必填项将自动标注;
  • 导入支持数据下拉选择,目前仅支持枚举类型;
  • 导入数据支持前后空格以及中间空格处理,允许指定列进行设置;
  • 导入支持模板自动检查,数据自动校验,异常统一处理,并提供统一的错误封装,包含异常、模板错误和行数据错误;
  • 支持导入表头位置设置,默认为1;
  • 支持导入列乱序,无需按顺序一一对应;
  • 支持导入指定列索引,默认自动识别;
  • 导出Excel支持拆分Sheet,仅需设置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,为0则不拆分。具体见单元测试;
  • 支持将导入Excel进行错误标注;
  • 导入支持截止列设置,如未设置则默认遇到空格截止;
  • 支持导出HTML、Word、Pdf,支持自定义导出模板;
    • 导出HTML
    • 导出Word
  • 导出Pdf,支持设置,具体见更新日志
  • 导出收据
  • 导入支持重复验证;
  • 支持单个数据模板导出,常用于导出收据、凭据等业务
  • 支持动态列导出(基于DataTable),并且超过100W将自动拆分Sheet。(感谢张善友老师(https://github.com/xin-lai/Magicodes.IE/pull/8 ))
  • 支持值映射,支持通过“ValueMappingAttribute”特性设置值映射关系。用于生成导入模板的数据验证约束以及进行数据转换。
        /// <summary>
        ///     性别
        /// </summary>
        [ImporterHeader(Name = "性别")]
        [Required(ErrorMessage = "性别不能为空")]
        [ValueMapping(text: "男", 0)]
        [ValueMapping(text: "女", 1)]
        public Genders Gender { get; set; }
  • 支持枚举和Bool类型的导入数据验证项的生成,以及相关数据转换

枚举默认情况下会自动获取枚举的描述、显示名、名称和值生成数据项

/// <summary>
     /// 学生状态 正常、流失、休学、勤工俭学、顶岗实习、毕业、参军
     /// </summary>
     public enum StudentStatus
     {
         /// <summary>
         /// 正常
         /// </summary>
         [Display(Name = "正常")]
         Normal = 0,

         /// <summary>
         /// 流失
         /// </summary>
         [Description("流水")]
         PupilsAway = 1,

         /// <summary>
         /// 休学
         /// </summary>
         [Display(Name = "休学")]
         Suspension = 2,

         /// <summary>
         /// 勤工俭学
         /// </summary>
         [Display(Name = "勤工俭学")]
         WorkStudy = 3,

         /// <summary>
         /// 顶岗实习
         /// </summary>
         [Display(Name = "顶岗实习")]
         PostPractice = 4,

         /// <summary>
         /// 毕业
         /// </summary>
         [Display(Name = "毕业")]
         Graduation = 5,

         /// <summary>
         /// 参军
         /// </summary>
         [Display(Name = "参军")]
         JoinTheArmy = 6,
     }
    • bool类型默认会生成“是”和“否”的数据项
    • 如果已设置自定义值映射,则不会生成默认选项
  • 支持excel多Sheet导入;
  • 支持Excel模板导出,并且支持图片渲染

渲染语法如下所示:

  {{Company}}  //单元格渲染
  {{Table>>BookInfos|RowNo}} //表格渲染开始语法
  {{Remark|>>Table}}//表格渲染结束语法
  {{Image::ImageUrl?Width=50&Height=120&Alt=404}} //图片渲染
  {{Image::ImageUrl?w=50&h=120&Alt=404}} //图片渲染
  {{Image::ImageUrl?Alt=404}} //图片渲染

后续将支持自定义管道。

  • 支持Excel导入模板生成标注
  • 支持Excel图片导入导出
    • 图片导入
      • 导入为Base64
      • 导入到临时目录
      • 导入到指定目录
    • 图片导出
      • 将文件路径导出为图片
      • 将网络路径导出为图片
  • 支持多个实体导出多个Sheet
  • 支持使用System.ComponentModel.DataAnnotations命名空间下的部分特性来控制导入导出#63
  • 支持在ASP.NET Core Web API 中使用自定义格式化程序导出Excel、Pdf、Csv等内容#64

FAQ

问题列表

https://github.com/dotnetcore/Magicodes.IE/issues?q=label%3Aquestion

其他开源库


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Magicodes.Admin.Core开源框架总体介绍

    Magicodes.Admin.Core框架在ABP以及ASP.NET ZERO的基础上进行了封装和完善,目前基于.NET Core 2.0+(Framewor...

    雪雁-心莱科技
  • 干货!请码住——点此领取免费开源框架

    框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法; 框架是可被应用开发者定制的应用骨架。

    雪雁-心莱科技
  • 使用Kubeadm创建k8s集群之部署规划(三十)

    上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群。

    雪雁-心莱科技
  • spring 在Thread中注入@Resource失败,总为null的解决方案

    @Resource private MyMapper myDao; 但是运行的时候,进入到这个线程,这个myDao总为nul...

    似水的流年
  • spring 在Thread中注入@Resource失败,总为null的解决方案

    运行项目将会发现NullPointerException,也就是说SelectDataService的实例没有被注入到变量selectDataService中。...

    似水的流年
  • Git 的这个神技,学会爽歪歪~

    当用到 SSH 方式来连接 GIT 仓库的时候,难免会同时用到多个仓库,一般生成公私钥的默认配置文件为:

    Java技术栈
  • 大数据安全分析—可视化篇

    熟悉金字塔原理的人都了解一个事实,人脑的短期记忆最大能够保持7个左右的元素,这意味着在分析工作中只能跟踪非常有限的数据。 而可视化作为探索、展示和表达数据含义的...

    小莹莹
  • spring 在Thread中注入@Resource失败,总为null的解决方案

    private MyMapper myDao;

    似水的流年
  • Java常量池详解,秒懂各种对象相等操作

    (2)节省运行时间:比较字符串时,== 比equals()快。对于两个引用变量,只用==判断引用是否相等,也就可以判断实际值是否相等。

    Java识堂
  • 现代C++之SFINAE应用(小工具编写)

    是不是有点像Python的print一样简单,但这背后实现也就仅仅不到100行的代码,本节来实现这种功能。

    公众号guangcity

扫码关注云+社区

领取腾讯云代金券