WeihanLi.Npoi 1.20.0 Released

WeihanLi.Npoi 1.20.0 Released

Intro

WeihanLi.Npoi 是一个基于 netstandard2.0 的一个 NPOI 扩展库,主要用于导入导出 Excel 以及CSV,支持通过 Fluent API 的方式来支持非常灵活的导入导出配置,详细使用可以参考文档介绍以及项目示例

Updates

最近我自己没什么更新,主要是一个外国小哥提了三个 PR,主要改进了 Excel 文件导入成一个 DataTable,对应的 API 是 ExcelHelper.ToDataTable

最近针对 DataTable 的改进都是基于导入一个别的地方生成的一个 excel 文件,如果你是 DataTable 使用这个库导出的话再导入是不会有问题的,主要更新如下:

Bug fix:

  • 修复导入的 Excel 文件表头单元格格式不是 string 时数据处理异常的 BUG https://github.com/WeihanLi/WeihanLi.Npoi/pull/120

  • 修复导入的 Excel 文件存在空列时可能会导致数据不对的 BUG https://github.com/WeihanLi/WeihanLi.Npoi/pull/118

Features:

  • ExcelHelper.ToDataTable API 增加 bool removeEmptyRows = false, int? maxColumns = null 参数,支持移除空行和指定最大导入行数https://github.com/WeihanLi/WeihanLi.Npoi/pull/123

    DataTable ToDataTable(byte[] excelBytes, ExcelFormat excelFormat, bool removeEmptyRows = false, int? maxColumns = default);DataTable ToDataTable(byte[] excelBytes, ExcelFormat excelFormat, int sheetIndex, bool removeEmptyRows = false, int? maxColumns = default);DataTable ToDataTable(string excelPath, int sheetIndex, int headerRowIndex, bool removeEmptyRows = false, int? maxColumns = default);
    
  • 作为对于 1.18.0 版本中引入的 MappingProfile feature 的改进(可以参考 WeihanLi.Npoi 1.18.0 Released),增加了几个 API 来简化 MappingProfiler 的注册

    FluentSettings.LoadMappingProfile<TestEntity, TestEntityExcelMappingProfile>();FluentSettings.LoadMappingProfile<TestEntityExcelMappingProfile>();FluentSettings.LoadMappingProfile(new TestEntityExcelMappingProfile());
    

More

看提 PR 小哥的 Github 资料,是来自捷克共和国,布拉格的一位工程师

小哥非常认真,提交的每一个 PR 都对应提供了完善的单元测试用例,真的非常赞,为小哥点赞 :thumbsup:,感谢小哥的贡献

我们如果在对开源项目做贡献的时候,应该向这位小哥学习,也应该尽可能地在修复 BUG 或者贡献新功能的同时提供对应的测试用例以构建更为健壮和高质量的开源项目

References

  • https://github.com/WeihanLi/WeihanLi.Npoi

  • https://weihanli.github.io/WeihanLi.Npoi/index.html

  • https://weihanli.github.io/WeihanLi.Npoi/docs/articles/intro.html

  • https://github.com/WeihanLi/WeihanLi.Npoi/pull/118

  • https://github.com/WeihanLi/WeihanLi.Npoi/pull/120

  • https://github.com/WeihanLi/WeihanLi.Npoi/pull/123

  • WeihanLi.Npoi 1.18.0 Released

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

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

相关文章

转:Chrome渲染分析之Timeline工具的使用

概述 这个工具真的很强大&#xff0c;Timeline工具栏提供了对于在装载你的Web应用的过程中&#xff0c;时间花费情况的概览&#xff0c;这些应用包括处理DOM事件, 页面布局渲染或者向屏幕绘制元素。Timeline可以通过事件&#xff0c;框架&#xff0c;和实时内存用量3个方面的数…

数学和物理太难?这些动图让你秒懂抽象概念

数学动图△ 从椭圆的一个焦点射出的光线总会通过另一个焦点。△ 真人版。△ 一图看懂正弦、余弦和正切什么意思。△ 圆的面积。△ 如何理解圆的面积和派的关系。△ 勾股定理演示。直角三角形的两条直角边的平方和&#xff08;两个小正方形的面积&#xff09;&#xff0c;加起来…

java typereference_记录一下jackson中TypeReference的使用

今天在看到项目中有一段代码是将string字符串转化成对象&#xff0c;需要被转化成对象的类加了TypeReference&#xff0c;随即去百度了下。TypeReference是一个抽象类&#xff0c;继承了Comparable接口。里面的Type是一歌接口。贴上代码&#xff1a;mapper.readValue(station.g…

Docker小白到实战之容器数据卷,整理的明明白白

前言上一篇把常用命令演示了一遍&#xff0c;其中也提到容器的隔离性&#xff0c;默认情况下&#xff0c;容器内应用产生的数据都是由容器本身独有&#xff0c;如果容器被删除&#xff0c;对应的数据文件就会跟着消失。从隔离性的角度来看&#xff0c;数据就应该和容器共存亡&a…

U9在SQL Server上的性能优化经验(转述) — 之 行版本快照

此文根据用友的文档《基于SQL Server 2008构建SOA大型管理软件技术实践》“翻译”而成&#xff0c;非原创。在baidu上看见此文&#xff0c;觉得写的很好&#xff0c;就将原先的PPT细化一下并除去废话。 第二篇部分将的是行版本快照的隔离。 这是PPT上的图片&#xff1a; 图片上…

程序员崩溃的40个瞬间!!!

全世界只有3.14 % 的人关注了爆炸吧知识说到程序员&#xff0c;在外界眼里&#xff0c;他们是掌控代码的大神&#xff0c;他们是改变世界的王者。其实程序员的工作不容易&#xff0c;不信&#xff0c;就来看看程序员崩溃的各种瞬间——01公司实习生找bug02在调试时&#xff0c;…

java web请求字符串处理_java web工作常用技能篇(三)-封装复杂请求对象2

前言&#xff1a;在各类网站论坛上,没有找到与工作比较贴切的技能,所以特此写一些对刚步入工作或者工作中没有重视的技能与问题,各位大牛请及时关闭文章.ps1&#xff1a;文中所有标点都是英文的,看官请不要在意.为了便于平时敲代码,所以中文输入法也默认了英文标点(防止各类因为…

Matlab学习------------带有右键菜单的GUI学习实例

实例步骤&#xff1a; 须要设置UIContextMenu&#xff0c;否则点击右键不显示。 右键点击第一个菜单之后&#xff1a;&#xff08;在菜单中加入对应的回调函数&#xff09; function r1_Callback(hObject, eventdata, handles) % hObject handle to r1 (see GCBO) % eventda…

多方位助您快速精准查阅文献和发文章的利器——X-MOL

全世界只有3.14 % 的人关注了爆炸吧知识无论您看文献的习惯是怎样的&#xff0c;X-MOL都有一种为您节省时间的功能:01根据参考文献一键直达全文—— X-MOL文献直达复制文章题录信息&#xff08;如“PNAS, 2020, 117, 6771-6776”&#xff09;或DOI&#xff0c; 粘贴到X-MOL首页…

ASP.NET Core端点路由中三种让人困惑的路由函数

早先提及了端点路由app.UseEndpoints, 端点路由强调的是端点和路由&#xff0c;其核心目的是将请求落地点与路由寻址方式解耦。《ASP.NET Core端点路由作用原理》这里面有几个容易混淆的函数•MapControllerRoute•MapDefaultControllerRoute•MapControllers有什么不同&#x…

java 写入环境变量_Java环境变量配置 - import_key的个人空间 - OSCHINA - 中文开源技术交流社区...

Java 环境变量和路径在 Solaris 系统上&#xff0c;必须先设置 JAVA_HOME 和 PATH 环境变量&#xff0c;Sun Management Center 3.6 安装向导、设置向导和 Java 控制台才能正常工作。与此类似&#xff0c;要使 Sun Management Center Java 控制台在 Microsoft Windows 上正常工…

电脑温度检测软件哪个好_实时检测Mac电脑的温度

想要实时检测Mac电脑的温度吗&#xff1f;那就来试试这款Temperature Gauge Pro吧。Temperature Gauge Pro又名为TG Pro&#xff0c;是一款专业的Mac实时温度的软件。这款软件能够帮助大家进行Mac中的风扇控制、温度监控和硬件诊断等功能&#xff0c;帮助大家更好的维护自己电脑…

【转】SQL SERVER 存储过程学习笔记

原文地址&#xff1a;http://www.cnblogs.com/nina-piaoye/archive/2006/09/18/507183.html 将常用的或很复杂的工作&#xff0c;预先用SQL语句写好并用一个指定的名称存储起来, 那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命…

我一哥们,在东莞和五名女孩被抓了.....

1 人在东莞&#xff0c;与五名女子一起被抓现已失联▼2 羊&#xff1a;我有一句MMP&#xff0c;不知当讲不当讲▼3 这是在上网查下一步应该怎么做&#xff1f;▼4 人生处处是惊喜▼5 看似平平无奇的棉签▼6 陈独秀同学&#xff0c;有话你站在桌子上说▼7 现在的玩具都这…

【成长点滴】对SMART原则的一些粗浅理解

【成长点滴】对SMART原则的一些粗浅理解 以下解释来自百度百科 “所谓SMART原则&#xff0c;即是&#xff1a; S&#xff1a;(Specific) 目标要清晰、明确&#xff0c;让考核者与被考核者能够准确的理解目标&#xff1b;M&#xff1a;(Measurable) 目标要量化&#xff0c;考核时…

太神奇了!使用C#实现自动核验健康码:(2)OCR识别

前言上次太神奇了&#xff01;使用C#实现自动核验健康码&#xff1a;(1)二维码识别&#xff0c;我们已经实现了识别健康码的颜色&#xff0c;但是健康码的内容不包含时间属性。那么使用图片就可以通过检查&#xff0c;肯定是不合适的。因此&#xff0c;我们还需要读出健康码上方…

bo耳机h5使用说明_真香时刻·性价比大旗——红米AirDots2 TWS真无线耳机体验测评...

TWS真无线耳机经过了这几年的发展&#xff0c;在音质、连接稳定性、易用性等方面都有了长足的发展&#xff0c;价格也从最早的上千元下探到了数百元&#xff0c;真正从发烧玩家的尝鲜设备变成了大众的日常用品。我用过的TWS耳机不下数十个&#xff0c;但即使是如Bose、B&O等…

这个行业人才紧缺,就业率超高!未来大有可为!

全世界只有3.14 % 的人关注了爆炸吧知识近几年&#xff0c;伴随人工智能的兴起&#xff0c;数据分析师、算法工程师等职业也迎来需求高峰。时下人工智能是炙手可热的一个行业&#xff0c;2015-2018年&#xff0c;中国人工智能产业市场规模从112.4亿元增长至415.5亿元&#xff0…

hash算法_到底什么是Hash?Hash算法的原理和实际应用讲解

提到hash&#xff0c;相信大多数同学都不会陌生&#xff0c;之前很火现在也依旧很火的技术区块链背后的底层原理之一就是hash&#xff0c;下面就从hash算法的原理和实际应用等几个角度&#xff0c;对hash算法进行一个讲解。1、什么是HashHash也称散列、哈希&#xff0c;对应的英…

java 子类 复制_关于java子类继承来的属性与方法究竟是完全复制还是共用使用...

关于java子类继承来的属性与方法究竟是完全复制还是共用使用关于java子类继承来的属性与方法究竟是完全复制还是共用使用今天在学习java的面向对象时&#xff0c;无意间发现一个问题。public class testEquals{public static void main(String[] args){Child cd1 new Child();…