Magicodes.IE是我们维护的开源的导入导出通用库,去年年底已加入NCC开源组织。

Github地址:https://github.com/xin-lai/Magicodes.IE

Magicodes.IE不是一蹴而就,而是根据实际需求不断迭代出来的,而且历经多次重构。这一次,趁着春节假期,我们重构并发布了Magicodes.IE 2.0。在这里尤其要感谢一位小伙伴,@hueifeng https://github.com/hueifeng,感谢其在春节期间为Magicodes.IE做出的文档贡献。

由于个人和团队精力有限,Magicodes.IE非常迫切地希望能得到大家的帮助和支持,尤其是代码和文档贡献。如有意向,可以提交PR或者和我直接联系(公众号或QQ群均可)。

相关Nuget包

主要更新

Magicodes.IE 2.0主要更新如下所示:

  • 完全重构整个导出Excel模块并且重写大部分接口

  • 支持列头筛选器——IExporterHeaderFilter,以便动态更改Excel导出结果

  • public class TestExporterHeaderFilter1 : IExporterHeaderFilter
    {/// <summary>/// 表头筛选器(修改名称)/// </summary>/// <param name="exporterHeaderInfo"></param>/// <returns></returns>public ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo){if (exporterHeaderInfo.DisplayName.Equals("名称")){exporterHeaderInfo.DisplayName = "name";}return exporterHeaderInfo;}}
    
  • 支持导入结果筛选器——IImportResultFilter,可用于多语言场景的错误标注

public class ImportResultFilterTest : IImportResultFilter
{/// <summary>/// 本示例修改数据错误验证结果,可用于多语言等场景/// </summary>/// <typeparam name="T"></typeparam>/// <param name="importResult"></param>/// <returns></returns>public ImportResult<T> Filter<T>(ImportResult<T> importResult) where T : class, new(){var errorRows = new List<int>(){5,6};var items = importResult.RowErrors.Where(p => errorRows.Contains(p.RowIndex)).ToList();for (int i = 0; i < items.Count; i++){for (int j = 0; j < items[i].FieldErrors.Keys.Count; j++){var key = items[i].FieldErrors.Keys.ElementAt(j);var value = items[i].FieldErrors[key];items[i].FieldErrors[key] = value?.Replace("存在数据重复,请检查!所在行:", "Duplicate data exists, please check! Where:");}}return importResult;}
}
  • 支持列筛选器(需实现接口【IImportHeaderFilter】),可用于兼容多语言导入等场景

  • /// <summary>
    /// 导入列头筛选器测试
    /// 1)测试修改列头
    /// 2)测试修改值映射
    /// </summary>
    public class ImportHeaderFilterTest : IImportHeaderFilter
    {public List<ImporterHeaderInfo> Filter(List<ImporterHeaderInfo> importerHeaderInfos){foreach (var item in importerHeaderInfos){if (item.PropertyName == "Name"){item.Header.Name = "Student";}else if (item.PropertyName == "Gender"){item.MappingValues = new Dictionary<string, dynamic>(){{"男",0 },{"女",1 }};}}return importerHeaderInfos;}
    }
    
  • 导出Excel支持拆分Sheet,仅需设置特性【ExporterAttribute】的【MaxRowNumberOnASheet】的值,为0则不拆分

  • [ExcelExporter(Name = "测试", TableStyle = "Light10", AutoFitAllColumn = true, MaxRowNumberOnASheet = 100)]
    public class ExportTestDataWithSplitSheet
    
  • Excel模板导出优化

  • 优化导出性能

    修复数据项为NULL的异常

    修复多个Table渲染以及合并单元格渲染的问题

    • IExporter再添加两个动态DataTable导出方法,无需定义Dto即可动态导出数据,并且支持表头筛选器、Sheet拆分

     /// <summary>///     导出Excel/// </summary>/// <param name="fileName">文件名称</param>/// <param name="dataItems">数据</param>/// <param name="exporterHeaderFilter">表头筛选器</param>/// <param name="maxRowNumberOnASheet">一个Sheet最大允许的行数,设置了之后将输出多个Sheet</param>/// <returns>文件</returns>Task<ExportFileInfo> Export(string fileName, DataTable dataItems, IExporterHeaderFilter exporterHeaderFilter = null, int maxRowNumberOnASheet = 1000000);/// <summary>///     导出Excel/// </summary>/// <param name="dataItems">数据</param>/// <param name="exporterHeaderFilter">表头筛选器</param>/// <param name="maxRowNumberOnASheet">一个Sheet最大允许的行数,设置了之后将输出多个Sheet</param>/// <returns>文件二进制数组</returns>Task<byte[]> ExportAsByteArray(DataTable dataItems, IExporterHeaderFilter exporterHeaderFilter = null, int maxRowNumberOnASheet = 1000000);
    
  • 支持传入标注文件路径,不传参则默认同目录”_”后缀保存

  • 修复日期格式默认导出数字的Bug,默认输出“yyyy-MM-dd”,可以通过设置“[ExporterHeader(DisplayName = “日期2”, Format = “yyyy-MM-dd HH:mm:ss”)]”来修改。

  • 修复没有定义导出特性会报错的情形。

  • 修复转换DataTable时支持为空类型

  • 修复导出结果无法筛选的问题

  • 完善相关单元测试

  • 完善部分文档并完成:

    • 基础教程之导出Excel

      https://github.com/dotnetcore/Magicodes.IE/blob/master/docs/2.%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B%E4%B9%8B%E5%AF%BC%E5%87%BAExcel.md

    • 基础教程之导出Pdf收据

      https://github.com/dotnetcore/Magicodes.IE/blob/master/docs/3.%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B%E4%B9%8B%E5%AF%BC%E5%87%BAPdf%E6%94%B6%E6%8D%AE.md

2.1版本预览

2.1规划如下,由于精力有限,具体时间待定:

  • Excel支持图片导入导出

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

  • Pdf导出支持.NET461

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

  • CSV导入导出支持

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

最后

由于个人和团队精力有限,Magicodes.IE非常迫切地希望能得到大家的帮助和支持,尤其是代码和文档贡献。如有意向,可以提交PR或者和我直接联系(公众号或QQ群均可)。

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

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

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

QQ群:

编程交流群<85318032>

产品交流群<897857351>

Magicodes.IE 2.0发布相关推荐

  1. Magicodes.IE 3.0重磅设计畅谈

    Magicodes.IE 3.0重磅设计畅谈 总体设计图 Magicodes.IE导入导出通用库,支持Dto导入导出.模板导出.花式导出以及动态导出,支持Excel.Csv.Word.Pdf和Html ...

  2. Magicodes.IE 2.2发布

    Magicodes.IE 2.2发布 导入导出通用库,支持DTO导入导出以及动态导出,支持Excel.Word.PDF.CSV和HTML.已加入ncc开源组织. Magicodes.IE2.0发布 M ...

  3. Boost 1.53.0 发布,可移植的C++标准库

    Boost 1.53.0 发布了,包含了 5 个新的库,修复了一些安全漏洞以及 Boost.Locale 组件的 bug . 新增的 5 个库包括: Boost.Atomic Boost.Corout ...

  4. java 开源sns_JEESNS V1.0发布,JAVA 开源 SNS 社交系统

    JEESNS V1.0 发布了,本次更新内容: 增加后台管理员授权与取消功能 增加私信模块 解决在微博页面,左侧微博点赞过后,左侧展示列表小手会变黑,但是右侧热门出小手依然是白色 修复后台添加栏目.文 ...

  5. EOSIO Dawn 4.0 发布

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 关于Dawn 4.0 RAM分配的反馈 一些社区成员表示担心,在其他任何人发现之前,有些人会通过购买便宜的内存来获得不合 ...

  6. Element 2.6.0 发布,基于 Vue 2.0 的桌面端组件库

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   Element 2.6.0 发布了,Element 是一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,提供了配套设 ...

  7. Git 2.25.0发布,支持部分clone、稀疏checkout

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | oschina 来源 | https://www.osc ...

  8. Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架

    Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...

  9. pxeconfig 4.2.0 发布,PXE 首要启动设备

    pxeconfig 4.2.0 发布了,pexconfig 可以让你使用支持 PXE 的网卡作为系统的首要启动设备.该软件包括 PXE 菜单工具用于控制网络计算机直接在 BIOS 级别上从控制台上启动 ...

最新文章

  1. python批量分析表格_示例python 批量操作excel统计销售榜品牌及销售额
  2. 关于Keil 的快速注释功能,并为其添加快捷键
  3. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
  4. 配置docker静态IP地址
  5. js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
  6. 鸿蒙系统2020正式版,鸿蒙2.0来了!华为开发者大会HDC 2020宣布
  7. AndroidStudio_Android Studio项目中报Call requires API level 18 (current min is 16)---Android原生开发工作笔记232
  8. java 文件无法下载_无法从Java中的URL下载文件
  9. 如何准备校招技术面试
  10. 阿里云平台购买域名 域名配置 域名解析步骤
  11. android脚本,安卓好用的脚本程序—Gscript
  12. 图片存档和通信系统(PACS)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  13. dbeaver sql字体异常
  14. 完美破解下载神器IDM
  15. 【转】表情识别(一)--传统方法概述
  16. 菲尔兹奖-历届获得者
  17. 12306火车余票查询
  18. java:左右手交换纸牌
  19. Java调用C++的dll库
  20. SV独立客户端无法登陆问题

热门文章

  1. Memcached简介
  2. 隐藏UITableView当没有数据或数据不够的时候出现的分割线.
  3. 中国地区三级联动下拉菜单的实现
  4. IM实现联系人及联系人分组的数据库设计
  5. macbook图形化编程_如何判断MacBook使用的是哪种图形芯片(并进行切换)
  6. linux服务器探针软件,服务器安装ServerStatus监控探针教程
  7. java 输入流关闭顺序_Java IO流中先关闭输出流还是先关闭输入流?为什么?
  8. 简单的单臂路由的配置实验 (思科)
  9. box-shadow阴影合集
  10. TabHost两种实现方式