WeihanLi.Npoi 1.13.0 更新日志
WeihanLi.Npoi 1.13.0 更新日志
Intro
在 Github 上收到 Issue 收到网友反馈希望支持自动分 Sheet 导出,有兴趣的可以参考 Issue https://github.com/WeihanLi/WeihanLi.Npoi/issues/94
从我个人角度来说,我觉得如果要导出很大批量的数据,可以导出 csv 文件,没有必要非得导出 Excel 文件,毕竟现在机器学习数据训练等很多都是用的 csv,而且 csv 的格式简单,更方便导出,导出性能会Excel更好更高效。
不过有些场景可能必须要用 Excel,所以想了一下还是加一下这个功能吧,目前只支持 List 或 DataTable 直接导出 Excel
使用示例
使用起来比较简单,和之前的使用并没有什么不同,可以参考下面的单元测试:
List 自动分 Sheet 导出:
[Theory]
[InlineData(ExcelFormat.Xls, 1000, 1)]
[InlineData(ExcelFormat.Xls, 65536, 2)]
[InlineData(ExcelFormat.Xls, 132_000, 3)]
//[InlineData(ExcelFormat.Xls, 1_000_000, 16)]
//[InlineData(ExcelFormat.Xlsx, 1_048_576, 2)]
public void EntityListAutoSplitSheetsTest(ExcelFormat excelFormat, int rowsCount, int expectedSheetCount)
{
var list = Enumerable.Range(1, rowsCount)
.Select(x => new Notice()
{
Id = x,
Content = $"content_{x}",
Title = $"title_{x}",
Publisher = $"publisher_{x}"
})
.ToArray();
var bytes = list.ToExcelBytes(excelFormat);
var workbook = ExcelHelper.LoadExcel(bytes, excelFormat);
Assert.Equal(expectedSheetCount, workbook.NumberOfSheets);
}
DataTable 自动分 Sheet 导出:
[Theory]
[InlineData(ExcelFormat.Xls, 1000, 1)]
[InlineData(ExcelFormat.Xls, 65536, 2)]
[InlineData(ExcelFormat.Xls, 132_000, 3)]
//[InlineData(ExcelFormat.Xls, 1_000_000, 16)]
//[InlineData(ExcelFormat.Xlsx, 1_048_576, 2)]
public void DataTableAutoSplitSheetsTest(ExcelFormat excelFormat, int rowsCount, int expectedSheetCount)
{
var dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("Id", typeof(int)));
for (var i = 0; i < rowsCount; i++)
{
var row = dataTable.NewRow();
row.ItemArray = new object[]
{
i+1
};
dataTable.Rows.Add(row);
}
Assert.Equal(rowsCount, dataTable.Rows.Count);
var bytes = dataTable.ToExcelBytes(excelFormat);
var workbook = ExcelHelper.LoadExcel(bytes, excelFormat);
Assert.Equal(expectedSheetCount, workbook.NumberOfSheets);
}
More
除了上面的示例,还提供了两个扩展方法 GetWorkbookWithAutoSplitSheet<TEntity>(this IList<TEntity> entityList, ExcelFormat excelFormat)/GetWorkbookWithAutoSplitSheet(this DataTable dataTable, ExcelFormat excelFormat, ExcelSetting excelSetting = null) 来获取自动分 Sheet 之后的 IWorkbook,进行进一步的自定义操作。
其他的操作方式和之前完全一样,可以直接导出文件,字节数组,或者写入到指定 Stream 里
void ToExcelFile<TEntity>(this IList<TEntity> entityList, string excelPath);
byte[] ToExcelBytes<TEntity>(this IList<TEntity> entityList, ExcelFormat excelFormat = ExcelFormat.Xls);
void ToExcelStream<TEntity>(this IList<TEntity> entityList, Stream stream, ExcelFormat excelFormat = ExcelFormat.Xls);
详细变更可以参考 PR: https://github.com/WeihanLi/WeihanLi.Npoi/pull/96/files
Reference
- https://github.com/WeihanLi/WeihanLi.Npoi/issues/94
- https://github.com/WeihanLi/WeihanLi.Npoi/blob/dev/test/WeihanLi.Npoi.Test/ExcelTest.cs#L625
- https://github.com/WeihanLi/WeihanLi.Npoi/pull/96
- https://weihanli.github.io/WeihanLi.Npoi/docs/api/WeihanLi.Npoi.NpoiExtensions.html
WeihanLi.Npoi 1.13.0 更新日志的更多相关文章
- WeihanLi.Npoi 1.10.0 更新日志
WeihanLi.Npoi 1.10.0 更新日志 Intro 上周有个网友希望能够导入Excel时提供一个 EndRowIndex 来自己控制结束行和根据字段过滤的,周末找时间做了一下这个 feat ...
- WeihanLi.Npoi 1.7.0 更新
WeihanLi.Npoi 1.7.0 更新介绍 Intro 昨天晚上发布了 WeihanLi.Npoi 1.7.0 版本,增加了 ColumnInputFormatter/ColumnOutputF ...
- WeihanLi.Npoi 1.11.0/1.12.0 Release Notes
WeihanLi.Npoi 1.11.0/1.12.0 Release Notes Intro 最近 NPOI 扩展新更新了两个版本,感谢 shaka chow 的帮忙和支持,这两个 Feature ...
- WeihanLi.Npoi 1.14.0 Release Notes
WeihanLi.Npoi 1.14.0 Release Notes Intro 周末更新了一下项目,开始使用可空引用类型,并且移除了 net45 的支持,仅支持 netstandard2.0 Cha ...
- WeihanLi.Npoi 1.16.0 Release Notes
WeihanLi.Npoi 1.16.0 Release Notes Intro 最近有网友咨询如何设置单元格样式,在之前的版本中是不支持的,之前主要考虑的是数据,对于导出的样式并没有支持,这个 is ...
- Docker 1.13.0 详细更新日志
本文讲的是Docker 1.13.0 详细更新日志[编者的话]Docker发布1.13.0版本,此次版本更新内容较多,以下为该版本具体的变更. 构建 添加在构建时可以指定镜像用作高速缓存源的功能. 这 ...
- Kali Liunx 2.0震撼来袭(附下载地址、新特性和更新日志)
Kali 2.0昨天已经在BlackHat 2015 USA上正式发布了.无论是粉丝们还是Kali官方都对这个2.0版本抱有极大的期待和热情.这是第一个基于Debian Jessie的Kali版本,此 ...
- WeihanLi.Npoi 近期更新
WeihanLi.Npoi 近期更新 Intro 最近对我的 NPOI 扩展做了一些改变,一方面提高性能,一方面修复bug,增加一些新的功能来让它更加好用,前几天发布了 1.5.0 版本,下面来介绍一 ...
- Easy Sysprep更新日志-skyfree大神
Easy Sysprep更新日志: Skyfree 发表于 2016-1-22 13:55:55 https://www.itsk.com/forum.php?mod=viewthread&t ...
随机推荐
- centos 7.8 添加磁盘后查看、分区、格式化、挂载
基础环境 公有云 由于磁盘空间快用完了,现在决定多加一个40G磁盘 第一步 分区 fdisk -l #查看当前磁盘信息 fdisk /dev/vdb #对指定磁盘进行操作 如上图一般磁盘的第一个分区都 ...
- js 判断客户端 和 asp.net/C#判断客户端类型
1.js 判断客户端 <script language="JavaScript"> <!-- onload = function browserRedirect( ...
- 第七章 TCP和UDP原理
一.引入 1.TCP/IP协议族的传输层协议主要包括TCP和UDP 2.TCP是面向连接的可靠的传输层协议.它支持在并不可靠的网络上实现面向连接的可靠的数据传输 3.UDP是无连接的传输协议,主要用于 ...
- java开发环境配置,看这一篇就足够了!
可能平时大家对于安装环境的需求不是那么强烈,但是当你换了一台新电脑时,你就会发现怎么也得花费你几个小时乃至半天一天的时间.故此整理此篇文章,给有需要的小伙伴 注:本文皆win10环境 (1).JDK的 ...
- Linux-京西百花山
百花山有三个收票的入口,分别在门头沟(G109).房山(G108)和河北 108有两个方向上百花山,史家营和四马台.只有史家营方向能开车到山顶. 四马台那边,不住,要坐景区车才行 尽头是1900多米的 ...
- Linux入门到放弃之五《用户管理》
用户管理 1.创建新用户user123,以此用户登陆系统,在tmp下创建文件test123: 2.修改test123文件的所有者为root,所属组也为root: 需要先切换为root用户 3.修改te ...
- 接收某项课程id,通过axios发起get请求,由于携带params出现的问题(已解决)
问题:在最新课程页面(NewBook.vue)点击某一项课程,通过传递该课程的 id 跳转至课程详情页(Bookdetail.vue),采取的跳转方式是声明式导航,即 <router-link ...
- java数据结构-12树相关概念
一.树 1.概念: 包含n(n>=0)个结点的有穷集:树有多个节点(node),用以储存元素.某些节点之间存在一定的关系,用连线表示,连线称为边(edge).边的上端节点称为父节点,下端称为子节 ...
- SQL注入的一些学习
-------------------------------------- 这是我之前发布到的其他的一个网址,这里的话我重新总结 可能分很多,我也不是很清楚,只是皮毛的研究了一下 1,sql按数据库 ...
- JAVA概述-JAVA入门基础
一.JAVA的历史 Java是1995年由Sun公司(现Oracle公司)推出的一门面向对象的高级编程语言.这门编程语言的Logo就像是一杯刚刚煮好的咖啡. Java最初期的开发是在1991年,最初的 ...