npoi

.NET导出Excel的四种方法及评测

情到浓时终转凉″ 提交于 2020-04-22 00:43:56
.NET导出Excel的四种方法及评测 导出 Excel 是 .NET 的常见需求,开源社区、市场上,都提供了不少各式各样的 Excel 操作相关包。本文,我将使用 NPOI 、 EPPlus 、 OpenXML 、 Aspose.Cells 四个市面上常见的库,各完成一个导出 Excel 示例。然后对其代码风格和 性能 做一个横向比较。最后我将说出我自己的感想。 文中所有的示例代码可以在这里下载: https://github.com/sdcb/blog-data/tree/master/2019/20190824-dotnet-excel-compare NPOI NPOI 源自于 Java 写的 Apache POI ,目前最新版本是 2.4.1 。 NPOI 是开源项目,作者是 华人 ,项目地址是: https://github.com/tonyqus/npoi 。 几年前大家导出 Excel 都使用 COM ,但 COM 不方便,这个组件的推出无疑弥补了 .NET 在 Excel 方面组件的空白,大家都说比 COM 好用。 NPOI 还加入了 .NET Core Community组织 。 EPPlus EPPlus 是另一个开源的 Excel 操作库,目前最新版本是 4.5.3.2 。 Github 地址如下: https://github.com/JanKallman

WeihanLi.Npoi 根据模板导出Excel

我怕爱的太早我们不能终老 提交于 2020-04-21 12:31:14
WeihanLi.Npoi 根据模板导出Excel Intro 原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据模板导出,在 1.8.0 版本中引入了根据模板导出的功能 使用示例 示例模板 模板规划的可以有三种数据: Global:一个是导出的时候可以指定一些参数,作为 Global 参数,默认参数格式使用: $(Global:PropName) 的格式 Header:配置的对应属性的显示名称,默认是属性名称,默认参数格式: $(Header:PropName) Data:对应数据的属性值,默认参数格式: $(Data:PropName) 默认模板参数格式(从 1.8.2 版本开始支持通过 TemplateHelper.ConfigureTemplateOptions 方法来自定义): Global 参数: $(Global:{0}) Header 参数: $(Header:{0}) Data 参数: $(Data:{0}) Data Begin: <Data> Data End: </Data> 模板规范: 模板需要通过 Data Begin 和 Data End 来配置数据模板的开始和结束以识别每一个数据对应的开始行和结束行 示例代码 示例配置 var setting =

WeihanLi.Npoi 根据模板导出Excel

て烟熏妆下的殇ゞ 提交于 2020-04-21 12:20:51
WeihanLi.Npoi 根据模板导出Excel Intro 原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据模板导出,在 1.8.0 版本中引入了根据模板导出的功能 使用示例 示例模板 模板规划的可以有三种数据: Global:一个是导出的时候可以指定一些参数,作为 Global 参数,默认参数格式使用: $(Global:PropName) 的格式 Header:配置的对应属性的显示名称,默认是属性名称,默认参数格式: $(Header:PropName) Data:对应数据的属性值,默认参数格式: $(Data:PropName) 默认模板参数格式(从 1.8.2 版本开始支持通过 TemplateHelper.ConfigureTemplateOptions 方法来自定义): Global 参数: $(Global:{0}) Header 参数: $(Header:{0}) Data 参数: $(Data:{0}) Data Begin: <Data> Data End: </Data> 模板规范: 模板需要通过 Data Begin 和 Data End 来配置数据模板的开始和结束以识别每一个数据对应的开始行和结束行 示例代码 示例配置 var setting =

使用内存映射文件MMF实现大数据量导出时的内存优化(Windows篇)

拥有回忆 提交于 2020-04-18 05:46:19
前言 导出功能几乎是所有应用系统必不可少功能,今天我们来谈一谈,如何使用内存映射文件MMF进行内存优化,本文重点介绍使用方法,相关原理可以参考文末的连接 实现 我们以单次导出一个excel举例(csv同理),excel包含1~n个sheet,在每个sheet中存储的按行和列的坐标在单元格存储具体数据,如果我们要使用MMF,第一个要考虑的就是如何将整个excel合理的存储到MMF中。这里我们引入MMF两个对象: MemoryMappedFile --表示内存映射文件 MemoryMappedViewAccessor --表示随机访问的内存映射文件视图 使用MemoryMappedFile.CreateNew(string mapName, long capacity)可以得到一个指定名称和指定大小的内存映射文件,以下简称mmf * 这里需要注意的是capacity为long类型,以字节为单位,通过计算可知文件大小上限为1G 使用mmf.CreateViewAccessor(long offset, long size)可以得到一个从指定位置开始的指定大小空间的访问器,以下简称accessor * 这里同样需要注意的是size的大小,如果加上offset超过文件大小,会报System.UnauthorizedAccessException: Access to the path is

Npoi复制行

孤者浪人 提交于 2020-04-05 23:28:15
private void CopyRange(HSSFWorkbook myHSSFWorkBook, int fromRowIndex, int fromColIndex, int toRowIndex, int toColIndex, bool onlyData, bool copyComment) { HSSFRow sourceRow = myHSSFWorkBook.GetSheetAt(myHSSFWorkBook.ActiveSheetIndex).GetRow(fromRowIndex); HSSFCell sourceCell = sourceRow.GetCell(fromColIndex); if (sourceRow != null && sourceCell != null ) { HSSFRow changingRow = null ; HSSFCell changingCell = null ; changingRow = myHSSFWorkBook.GetSheetAt(myHSSFWorkBook.ActiveSheetIndex).GetRow(toRowIndex); if (changingRow == null ) changingRow = myHSSFWorkBook.GetSheetAt(myHSSFWorkBook

.net core 导出word文档

限于喜欢 提交于 2020-03-30 13:09:18
Npoi导出word(Peanuts) 标签: C# npoi 导出word 合并列 列样式 2015-10-05 22:16 2896人阅读 评论 (0) 收藏 举报 分类: C#(13) 版权声明:本文为博主原创文章,未经博主允许不得转载。 一个项目,要做一个从 数据库 读取数据,然后导出到word,因为涉及到后台数据库的读取,决定用npoi来导出word。 NPOI源码地址:http://npoi.codeplex.com/ NPOI 2.0 api文档: http://www.npoi.info/npoi2tutorial 因为npoi操作word的文章比较少,在由于版本不同,相关的函数可能不一样,这个就需要大家自己去慢慢的探索了。 例如:作者的api文档中 c.字体加粗 r1.SetBold(true); 实际我在调用时,调用的接口是 r1c1.IsBold = 12; 我使用的版本是:NPOI v2.2.0.0 需要引用的命名空间如下 using NPOI.XWPF.UserModel; using NPOI.OpenXmlFormats.Wordprocessing; 最终效果图如下: 关键代码如下: [csharp] view plain copy /// <summary> /// 新增 /// </summary> /// <param name="sender

导出到Excel中NPOI

拟墨画扇 提交于 2020-03-22 12:43:48
源地址: http://www.cnblogs.com/dreamof/archive/2010/06/02/1750151.html \ 1、NPOI 官方网站 : http://npoi.codeplex.com/ 可以到此网站上去下载最新的NPOI组件版本 2、NPOI在线学习教程(中文版): http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html 感谢Tony Qu分享出NPOI组件的使用方法 3、.NET调用NPOI组件导入导出Excel 的操作类   此NPOI操作类的优点如下: (1)支持web及winform从DataTable导出到Excel; (2)生成速度很快; (3)准确判断数据类型,不会出现身份证转数值等问题; (4)如果单页条数大于65535时会新建工作表; (5)列宽自适应; NPOI操作类 <!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Web; 5

Aspose.Cell和NPOI生成Excel文件2

不打扰是莪最后的温柔 提交于 2020-03-15 07:06:31
NPOI还是比较好用的,引用dll程序集即可 1创建workbook和工作流 HSSFWorkbook workbook = new HSSFWorkbook(); MemoryStream ms = new MemoryStream(); 2这里是一个多sheet的例子,可以通过循环一个个生成 1 List<DataTable> listtable = new List<DataTable>(); 2 for(int t = 1; t < = listtable.Count();t++) 3 { 4 DataTable tempTable = listtable[t-1]; 5 //增加sheet,listname是一个List<string>作为表明 6 HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(listname[t-1]); 7 HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0); 8 foreach(DataColumn column in tempTable.Columns) 9 { 10 //创建列 11 headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName); 12 } 13 int

基于NPOI导出和导入Excel

北慕城南 提交于 2020-03-12 09:48:22
概述    NPOI,顾名思义,就是POI的.NET版本。NPOI就是用.NET语言编写的一套数据导出Excel的开源项目,支持XML、xls、xlsx、ppt等格式。.NET不仅实现Excel导出还可以实现Excel导入,读取Excel的数据。 实现    1、通过nuget,添加NPOI组件1.2以上对应的DLL文件;    2、编写如下Nopi封装类,该类实现如下功能点     1> 该类实现数据的超过65535自动分写下一个sheet;     2> 该类实现Web数据导出和文件保存到本地;     3> 该类实现Excel文件的读取导出; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using System.Text; using NPOI; using NPOI.HPSF; using NPOI.HSSF; using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.POIFS; using NPOI.Util; using System.Data; using NPOI.SS.UserModel; using NPOI.SS.Util;

NPOI 导入 导出

孤人 提交于 2020-03-12 09:47:32
using NPOI.XSSF.UserModel; using System.IO; 导入 /// <summary> /// Excel转换DataTable /// </summary> /// <param name="FilePath">文件的绝对路径</param> /// <returns>DataTable</returns> public static DataTable ExcelInput(string FilePath) { //第一行一般为标题行。 DataTable table = new DataTable(); //根据路径通过已存在的excel来创建HSSFWorkbook,即整个excel文档 XSSFWorkbook hssfworkbook; using (FileStream file = new FileStream(FilePath, FileMode.Open, FileAccess.Read)) { XSSFWorkbook workbook = new XSSFWorkbook(file); XSSFSheet sheet = (XSSFSheet)workbook.GetSheetAt(0); //获取excel的第一个sheet //获取Excel的最大行数 int rowsCount = sheet