开源项目 | Magicodes.IE 3.0

Posted EdisonTalk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源项目 | Magicodes.IE 3.0相关的知识,希望对你有一定的参考价值。

【开源项目作者 / 麦扣聊技术

Magicodes.IE 3.0重磅发布,项目作者跟你聊聊它的设计,值得一读。如果你有导入导出的业务需求,不妨使用一下Magicodes.IE!

1总体设计图

开源项目 | Magicodes.IE 3.0

Magicodes.IE导入导出通用库,支持Dto导入导出、模板导出、花式导出以及动态导出,支持Excel、Csv、Word、Pdf和html

2主要解决的问题

IE在去年年底重构一次之后,经过这么长时间的迭代,又迎来了瓶颈。根据本人和HueiFeng的交流,我们决定逐步暂缓小版本的研发,开始IE 3.0的研发和重构之旅。这一次3.0的设计,我们主要考虑了以下方面:

在之前的版本迭代中,我们遗留了一些痛点一直并没得到很好的解决,同时我们也有一些想法,也没来及处理:

1.更友好的本地化支持,以及统一的多语言配置。在之前的版本中,我们虽然可以通过筛选器实现,但是并不太友好。

2.进一步简化和加强动态导出。动态选择列导出在很多业务中比较常见,我们希望通过更简单的API给用户提供更强大的动态导出功能,而无需用户动态建立DTO并且转换数据类型。

3.合并列头

开源项目 | Magicodes.IE 3.0

4.单元格合并。目前主要考虑同一个值自动合并的功能。

开源项目 | Magicodes.IE 3.0

5.重构并重新定义样式。支持用户能够非常便捷的定义表样式、列样式(包含列宽、固定列)、行样式(包含行高)以及单元格样式(包含高宽、背景)。

6.脱离特性类重构底层导入导出的最基础的API。以便支持除了特性类导入导出之外,还支持动态导出以及JSON、XML配置导出。

7.提供更多更简单的钩子函数,覆盖导入导出的各个处理环节,方便用户按需处理。

8.添加列模型封装,支持日期列、图片列、进度列、状态列、开关列、标签列、评星列、公式列等。

3为何要做IE这个项目

其实在IE之前,我们有很多选择,OpenXML、NPOI、EPPlus,为什么我们选择做IE呢?

在日常的业务开发之中,导入导出是非常常见的业务,甚至渗漏到了每个列表功能之中,但是就是这么一个常见业务,我们往往需要花费一定精力,而且在很多时候都是重复开发。经验丰富的开发者都清楚,写一个导入导出并不难,但是写好一个导入导出业务并不简单,我们就拿一个普通的导入业务来说,往往我们要考虑到以下内容:

1.针对当前导入业务编写导入模板生成(写死不易于维护)

2.导入时需要先检查相关列和格式是否有效

3.数据校验。对于Excel这种放开了限制的输入方式,用户的输入内容会让你怀疑人生。稍有疏漏,程序都会产生各种意外。并且,如果验证不通过,我们还需要在UI界面上提示用户哪里有错误,甚至要在用户的导入文件中标注出来。

4.数据类型转换和适配。

看了以上流程,那么你还会觉得做一个导入简单么?正因为如此,Magicodes.IE应运而生,我们希望通过IE来帮助大家简化导入、导出业务,并且代码更简洁、更友好以及更易于维护和扩展。

需求是无止境的,IE经过长久的迭代,目前最新版本为2.5版本。功能已经够多了,但是还是不够满意。经过我们的再三思考,我们决定暂缓小版本迭代,直接开始3.0的设计和研发。我们希望在3.0进一步重构,打好基础,一方面彻底解决一些之前未实现的功能,另一方面,让部分API更友好,同时极大的提升IE的扩展性。

4贡献邀请
5小结

最后,发起一个求助:

https://github.com/dotnetcore/Magicodes.IE/issues/171
【翻译求助】教程翻译求助。Tutorial translation help #171,希望有人能够抽空帮忙整理教程并且主导翻译工作。


以上是关于开源项目 | Magicodes.IE 3.0的主要内容,如果未能解决你的问题,请参考以下文章

Magicodes.IE之总体教程

Magicodes.IE之快速导出Excel

Magicodes.IE之Excel模板导出教材订购表

Magicodes.IE在Docker中使用

Magicodes.IE 2.5.6.1发布

Magicodes.IE 2.7.1发布