Magicodes.IE 2.2发布

Magicodes.IE 2.2发布

导入导出通用库,支持DTO导入导出以及动态导出,支持Excel、Word、PDF、CSV和HTML。已加入ncc开源组织.

Magicodes.IE2.0发布

Magicodes.IE2.1发布

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

  • GitHub:

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

  • 码云(手动同步,不维护):

    https://gitee.com/magicodes/Magicodes.IE

  • 特点、详细说明、教程、Nuget、注意事项、里程碑、FAQ、更新历史见下文

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

最新版本2.2.0

2.2版本内容

2020.05.12

  • [Nuget]版本更新到2.2.0

  • [EXCEL模板导出]支持导出字节

  • [文档]Magicodes.IE CSV导入导出

  • [EXCEL导入导出]修复标注的添加问题

  • [导出]ASP.NETCoreWebAPI中使用自定义格式化程序导出Excel、PDF、CSV等内容 #64

  • [导入导出]支持使用System.ComponentModel.DataAnnoations命名空间下的部分特性来控制导入导出 #63

2020.04.16

  • [Nuget]版本更新到2.2.0-Beta 9

  • [EXCEL模板导出]修复只存在一列时的导出#73

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

  • [EXCEL导入]支持返回表头和索引#76

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

  • [EXCEL导入导入]#63

    • IEIgnoreAttribute(可作用于属性、枚举成员,可影响导入和导出)
    • 显示属性
    • DisplayFormatAttribute
    • DescriptionAttribute
    • 支持使用系统.ComponentModel.DataAnnoations命名空间下的部分特性来控制导入导出,比如
    • 封装简单的易于使用的单一特性,例如

      IEIgnoreAttribute(可作用于属性、枚举成员,可影响导入和导出)

2020.04.02     

  • [Nuget]版本更新到2.2.0-Beta 8

  • [EXCEL模板导出]支持图片#62

    https://github.com/dotnetcore/Magicodes.IE/issues/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-Beta 7

  • [EXCEL模板导出]修复渲染问题#51

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

2020.03.27

  • [Nuget]版本更新到2.2.0-Beta 6

  • [EXCEL导入导出]修复.NET Core 2.2的包引用问题#68

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

2020.03.26

  • [Nuget]版本更新到2.2.0-Beta 4

  • [EXCEL多Sheet导出]修复#66、并添加单元测试

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

2020.03.25

  • [Nuget]版本更新到2.2.0-beta3

  • [EXCEL导入]修复日期问题#68

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

  • [EXCEL导出]添加ExcelOutputType设置,支持输出无格式的导出.#54可以使用此方式.

2020.03.19

  • [Nuget]版本更新到2.2.0-Beta 2

  • [EXCEL导入]修复日期格式的导入Bug,支持datetime和DateTimeOffset以及可为空类型,默认支持本地化时间格式(默认根据地区自动使用本地日期时间格式]

  • [EXCEL导入导出]添加单元测试ExportandImportUseOneDto_Test,对使用同一个dto导出并导入进行测试.发行见#53

2020.03.18

  • [Nuget]版本更新到2.2.0-Beta 1

  • [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导出]支持多个实体导出多个表,感谢@ccccccmd的贡献#PR52

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

    发布见#50

    https://github.com/dotnetcore/Magicodes.IE/issues/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);

疯狂的徽章

Azure DevOps

具体见:

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

里程碑

Nuget

Magicodes Nuget包推荐

注意

  • Excel导入不支持“.xls”文件,即不支持Excel97-2003。

  • 如需在Docker中使用,请参阅文档中的“Docker中使用”一节.

  • 相关功能均已编写单元测试,在使用的过程中可以参考单元测试.

教程

  1. 基础教程之导入学生数据 (点此访问)

  2. 基础教程之导出Excel (点此访问)

  3. 基础教程之导出PDF收据(点此访问)

  4. 在码头中使用

  5. (动态导出(待补充)

  6. (多Sheet导入(待补充)

  7. csv导入导出

  8. EXCEL图片导入导出 (点此访问)

  9. EXCEL模板导出之导出教材订购表(点此访问)

  10. (进阶篇之导入导出筛选器(待补充)

  11. (EXCEL导出多个实体(待补充)

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

更新历史见下文.

特点

  • 需配合相关导入导出的DTO模型使用,支持通过DTO以及相关特性控制导入导出.配置特性即可控制相关逻辑和显示结果,无需修改逻辑代码; 

  • 支持各种筛选器,以便支持多语言、动态控制列展示等场景,具体使用见单元测试:

    • (导入列头筛选器(可动态指定导入列、导入的值映射关系)

    • 导出列头筛选器(可动态控制导出列,支持动态导出(数据表)

    • (导入结果筛选器(可修改标注文件)

  • 导出支持文本自定义过滤或处理;

  • 导入支持中间空行自动跳过;

  • 导入支持自动根据DTO生成导入模板,针对必填项将自动标注; 

  • 导入支持数据下拉选择,目前仅支持枚举类型;

  • 导入数据支持前后空格以及中间空格处理,允许指定列进行设置;

    导入支持模板自动检查,数据自动校验,异常统一处理,并提供统一的错误封装,包含异常、模板错误和行数据错误; 

  • 支持导入表头位置设置,默认为1;

  • 支持导入列乱序,无需按顺序一一对应;

  • 支持导入指定列索引,默认自动识别;

  • 导出Excel支持拆分Sheet,仅需设置特性[ExporterAttribute]的[MaxRowNumberOnASheet]的值,为0则不拆分。具体见单元测试;

  • 支持将导入Excel进行错误标注;  

  • 导入支持截止列设置,如未设置则默认遇到空格截止;

  • 支持导出HTML、Word、PDF,支持自定义导出模板;

    • 导出HTML 

    • 导出字 

    • 导出PDF,支持设置,具体见更新日志 

    • 导出收据 

  • 导入支持重复验证; 

  • 支持单个数据模板导出,常用于导出收据、凭据等业务

  • 支持动态列导出(基于数据表),并且超过100 W将自动拆分工作表。(感谢张善友老师(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图片导入导出

    • 将文件路径导出为图片
    • 将网络路径导出为图片
    • 导入为Base 64
    • 导入到临时目录
    • 导入到指定目录
    • 图片导入
    • 图片导出
  • 支持多个实体导出多个片材

  • 支持使用系统.ComponentModel.DataAnnoations命名空间下的部分特性来控制导入导出 #63

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

  • 支持在ASP.NET核心网络API中使用自定义格式化程序导出Excel、PDF、CSV等内容 #64

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

常见问题

问题列表

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

联系我们

QQ群
  • 编程交流群<85318032>

  • 产品交流群<897857351>

文档官网&官方博客
  • 文档官网:https://docs.xin-lai.com/

  • 博客:http://www.cnblogs.com/codelove/

其他开源库
  • https://github.com/xin-lai

  • https://gitee.com/magicodes

层出不穷的新技术对程序员来说既是挑战也是机遇,固守自己的一亩三分地迟早落于他人,是时候跳出来看看行业内的发展新趋势,参与2020 DAMS中国数据智能管理峰会是个不错的选择,其中前沿技术议题包括:

《当5G遇上金融,看电信甜橙金融如何创新?》中国电信甜橙金融技术创新中心总经理 张小虎

《智能制造的数字化基础的设计与演进》长城汽车集团云计算总监 张小斌

《平安银行“传统+互联网”混合CMDB及运营中台实践》平安银行运营开发负责人 徐大蔚

《中信银行的DevOps实践》中信银行DevOps实施牵头人 李红涛

8月7日,一起在上海洞悉技术发展新趋势,逆袭码农人生吧!

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

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

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

QQ群:

编程交流群<85318032> 

产品交流群<897857351>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 基类,子对象,派生类构造函数调用顺序

#include <iostream> using namespace std;class A {public:A( ) {cout << "A Constructor………" << endl;}~A( ) {cout << "A Destructor………" << endl;} };class B: public A {public:B( ) {cout << "B …

C++ 虚析构函数

代码如下: #include <iostream> using namespace std;class Base {public:Base() {cout << "Base" << endl;}~Base() {cout << "Base destructor" << endl;} };class Derived : public Base {public:Derived() {cout <&…

I - Interesting Permutation Gym - 102394I(排列组合)

题意&#xff1a; 纯数题 1≤i≤n, fimax{a1,a2,…,ai}; 1≤i≤n, gimin{a1,a2,…,ai}; 1≤i≤n, hifi−gi. 数列a是一个排列&#xff0c;问多少种排列方式满足h数列。 题目&#xff1a; DreamGrid has an interesting permutation of 1,2,…,n denoted by a1,a2,…,an. He …

Magicodes.SwaggerUI 已支持.NET Core 3.1

Magicodes.SwaggerUI 通过配置文件简单配置即可快速完成SwaggerUI的配置&#xff0c;包括&#xff1a;SwaggerUI的文档信息API分组API隐藏API JSON生成&#xff08;枚举、API架构Id&#xff09;验证自定义页面支持.NET Core 2.2和3.1。版本日志和使用教程见下文。注意&#xff…

[推荐]大量 Blazor 学习资源(二)

继上一篇《[推荐]大量 Blazor 学习资源&#xff08;一&#xff09;》之后&#xff0c;社区反应不错&#xff0c;但因个人原因导致这篇文章姗姗来迟&#xff0c;不过最终还是来了&#xff01;这篇文章主要收集一些常用组件、书籍和电子书。资料来源&#xff1a;https://github.c…

Sql Server之旅——第八站 看公司这些DBA们设计的这些复合索引

这一篇再说下索引的最后一个主题&#xff0c;索引覆盖&#xff0c;当然学习比较好的捷径是看看那些大师们设计的索引&#xff0c;看从中能提取些什么营养的东西&#xff0c;下面我们看看数据库中一个核心的Orders表。一&#xff1a;查看表的架构1. 先查看这个表的大概架构信息-…

C++ setprecision()用法

io 流控制头文件, 主要是一些操纵用法如setw(int n),setprecision(int n) #include < iomanip > setw(n)用法&#xff1a; 通俗地讲就是预设宽度 #include<iostream> #include <iomanip> using namespace std;int main() {cout << setw(5) <<…

备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)

挑战程序设计竞赛&#xff08;第2版&#xff09;练习题 tips&#xff1a;难度&#xff08;个人主观判断&#xff09;&#xff1a; 简单* 简单但卡思维 ** 中 *** 中稍加思考 **** 难 ***** 1 . 记录结果再利用的“动态规划” &#xff08;1&#xff09;基础的动态规划算法&am…

15分钟从零开始搭建支持10w+用户的生产环境(四)

上一篇文章&#xff0c;介绍了这个架构中&#xff0c;WebServer的选择&#xff0c;以及整个架构中扩展时的思路。原文地址&#xff1a;15分钟从零开始搭建支持10w用户的生产环境(三)五、架构实践前边用了三篇文章&#xff0c;详细介绍了这个架构的各个部分的选择以及安装。这篇…

[Java基础]体验Stream流

代码如下: package StreamTest;import java.lang.reflect.Array; import java.util.ArrayList;public class StreamDemo {public static void main(String[] args){ArrayList<String> list new ArrayList<String>();list.add("Tom");list.add("ja…

Cow Bowling POJ - 3176(基础的动态规划算法)

题意&#xff1a; 杨辉三角&#xff0c;让从顶部开始走到底部&#xff0c;所经过的每一层的点数相加&#xff0c;使得实现最高和。 题目&#xff1a; The cows don’t use actual bowling balls when they go bowling. They each take a number (in the range 0…99), thoug…

[Java基础]Stream流的常见生成方式

1.Collection体系的集合可以使用默认方法stream()生成流 default Stream< E > stream() 代码如下: package StreamTest;import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Stream;public …

Sumsets POJ - 2229(计数dp)

题意&#xff1a; 给一个数&#xff0c;是集合的总数和&#xff0c;集合元素只能为2的次幂数&#xff0c;问这样的集合有多少&#xff1f; 题目&#xff1a; Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows…

15分钟从零开始搭建支持10w+用户的生产环境(二)

上一篇文章&#xff0c;把这个架构的起因&#xff0c;和操作系统的选择进行了详细说明。原文地址&#xff1a;15分钟从零开始搭建支持10w用户的生产环境(一)二、数据库的选择对于一个10W用户的系统&#xff0c;数据库选择很重要。一般来说&#xff0c;这个用户量&#xff0c;根…

[Java基础]Stream流的常见中间操作方法

代码如下: package StreamTest;import java.util.ArrayList;public class StreamDemo02 {public static void main(String[] args){ArrayList<String> list new ArrayList<String>();list.add("Tom");list.add("Bom");list.add("jack&q…

云原生初探

文章目录什么是云原生&#xff1f;第二讲 容器的基本概念什么是容器&#xff1f;容器运行时的生命周期容器项目的架构容器和VM的差异第三讲 Kubernetes核心概念什么是KubernetesKubernetes架构Kubernetes核心概念和API第四讲 理解Pod和容器设计模式为什么Pod必须是原子调度单位…

15分钟从零开始搭建支持10w+用户的生产环境(三)

上一篇文章介绍了这个架构中&#xff0c;选择MongoDB做为数据库的原因&#xff0c;及相关的安装操作。原文地址&#xff1a;15分钟从零开始搭建支持10w用户的生产环境(二)三、WebServer在SOA和gRPC大行其道的今天&#xff0c;WebServer在系统中属于重中之重&#xff0c;是一个系…

[Java基础]Stream流终结操作之forEachcount

代码如下: package StreamTest;import java.util.ArrayList;public class StreamDemo06 {public static void main(String[] args) {ArrayList<String> list new ArrayList<String>();list.add("Jack");list.add("Tom");list.add("张敏…

实现.Net程序中OpenTracing采样和上报配置的自动更新

前言OpenTracing是一个链路跟踪的开放协议&#xff0c;已经有开源的.net实现&#xff1a;opentracing-csharp&#xff0c;同时支持.net framework和.net core&#xff0c;Github地址&#xff1a;https://github.com/opentracing/opentracing-csharp。这个库支持多种链路跟踪模式…

[Java基础]Stream流综合练习

代码如下: package StreamDemoFinal;public class Actor {private String name;public Actor(String name) {this.name name;}public String getName() {return name;}public void setName(String name) {this.name name;} }package StreamDemoFinal;import java.util.Array…