总体设计

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

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

主要解决痛点

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

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

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

  3. 合并列头。

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

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

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

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

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

     

为什么要做IE?

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

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

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

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

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

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

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

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

贡献邀请

对于3.0版本目前我们还处于设计和思考阶段,当然3.0也是IE里程碑中的一项重大的更新,是值得记录的,我们很期待3.0版本的发布,但是由于该版本我们要做一个历史性的大更新,我们开发团队人数也不足,目前缺少贡献者的参与,我们发自内心的希望大家能够加入我们,一起来建设IE,没有时间不要紧,只要每周抽出来几个小时。能力达不到不要紧,一方面我们可以先实现功能,再优化代码;另一方便,我们开发团队以及群里的小伙伴均可提供思路以及一对一的支持。

最后

3.0版本我们目前还在设计和思考阶段,欢迎大家多多提供宝贵意见和建议,如果合理我们会一并纳入。不过,由于我们精力实在有限,也非常发自内心的希望大家能够加入我们,一起来建设IE。没有时间不要紧,只要每周抽出几个小时。能力达不到不要紧,一方面我们可以先实现功能,再优化代码;另一方面,我和HueiFeng以及群里的小伙伴均可提供思路以及一对一的支持。

针对IE,我们是认真的,也希望认真的你能够加入我们!

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

Magicodes.IE 3.0重磅设计畅谈的更多相关文章

  1. julia,集Python、C++、R为一体!Julia 1.0重磅发布, MIT发布史上最强科学计算编程语言?创始人独家解答11个问题

    这个编程语言的新版本之所以受到整个人工智能界的关注,最主要的原因正是其将 C 语言的速度.Ruby 的灵活.Python 的通用性前所未有地结合在一起,支持并行处理,易于学习和使用,尤其适合科学和工程 ...

  2. (转)OAuth 2.0的设计思路

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R ...

  3. POLARDB 2.0 重磅升级,分别支持Oracle与PostgreSQL

    点击订阅新品发布会! 新产品.新版本.新技术.新功能.价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 POLARDB 2.0 重磅升级 2019年6月19日15时,阿里云 POLAR ...

  4. 云数据库 MySQL 8.0 重磅发布,更适合企业使用场景的RDS数据库

    点击订阅新品发布会! 新产品.新版本.新技术.新功能.价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 云数据库MySQL 8.0 升级发布会 2019年5月29日15时,阿里云云数据 ...

  5. Magicodes.IE 2.0发布

    Magicodes.IE 2.0发布 Magicodes.IE是我们维护的开源的导入导出通用库,去年年底已加入NCC开源组织. Github地址:https://github.com/xin-lai/ ...

  6. 支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型

    支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型 原创 杨翊(席翁) 阿里巴巴云原生 2020-12-28    

  7. Magicodes.WeiChat——多租户的设计与实现

    概要 多租户(Multi Tenancy/Tenant)是一种软件架构,其定义是:在一台服务器上运行单个应用实例,它为多个租户提供服务. 本框架使用的是共享数据库.共享 Schema.共享数据表的数据 ...

  8. 【老孟Flutter】Flutter 2.0 重磅更新

    老孟导读:昨天期待已久的 Flutter 2.0 终于发布了,Web 端终于提正了,春季期间我发布的一篇文章,其中的一个预测就是 Web 正式发布,已经实现了,还有一个预测是:2021年将是 Flut ...

  9. 120项改进:开源超级爬虫Hawk 2.0 重磅发布!

    沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...

随机推荐

  1. C++有子对象的派生类的构造函数

    转载:https://blog.csdn.net/qq1169091731/article/details/50934588?utm_source=blogxgwz6 类的数据成员不但可以是标准型(如 ...

  2. Java中的对象都是在堆上分配的吗?

    作者:LittleMagic https://www.jianshu.com/p/8377e09971b8 为了防止歧义,可以换个说法: Java对象实例和数组元素都是在堆上分配内存的吗? 答:不一定 ...

  3. 使用SignalR和XSLT进行实时注释

    下载source code - 10.1 MB Introduction  众所周知,web请求(HTTP请求)是根据请求/响应机制工作的.通过这种方式,作为客户机的浏览器使用GET或POST向服务器 ...

  4. JVM笔记五-堆区

    JVM笔记五-堆区 在JVM中,堆区是重中之重.通过前面文章的学习,我们知道了,栈区是不会有垃圾回收的,所以,经常说的垃圾回收,其实就是回收的是堆区的数据.在这里,我们将会看到传说中的,新生代.老年代 ...

  5. 联赛模拟测试14 A. 虎

    题目描述 这题太虎了,所以没有背景. 给你一棵树,边有黑白两种颜色,你每次可以选择两个点,把这两个点之间的唯一简单路径上的所有边颜色取反,某些边要求最终颜色必须是黑色,还有些边没有要求,问最少操作多少 ...

  6. 如何部署MongoDB并开启远程访问Docker版

    Docker安装 安装方法 pull最新版本mongo docker pull mongo 运行 --name设置名称 -v挂载数据 -p端口映射 -d后台运行 mkdir ~/mongo #随便啦自 ...

  7. 串口wifi

    串口wifi 串口WiFi ZLAN7146是一款wifi转串口的wifi串口服务器.该串口服务器可以方便地使得串口设备连接到WIFI无线网络,实现串口设备的无线化网络升级.RS232接口支持全双工. ...

  8. linux centos 05

    centos7安装mariadb 1.yum  得配置yum源,配置阿里云的 两个 yum源  ,阿里云的yum源中,会有 mariadb的软件包 阿里云的yum仓库中,mariadb版本如下 mar ...

  9. redis过期事件,swoole监听

    $serv = new Swoole\Server('0.0.0.0', 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP); $serv->set(array( 'work ...

  10. H5头部内容

    <head> <meta charset="utf-8"> <title>口袋小鼠</title> <meta name=&q ...