C#使用NPOI对Excel文档进行读、写、导入、导出等操作的dll最新版2.5.1+2.3.0
dll最新版2.5.1,支持.NET4.0 /.NET4.5以及v2.3.0(最后一个支持.NET2.0的版本)。下载:https://download.csdn.net/download/dserver/12391101
NPOI的官方主页:http://npoi.codeplex.com/
Nuget:https://www.nuget.org/packages/NPOI/
简介
NPOI 是 POI 项目的 .NET 版本。NPOI是构建在POI 3.x版本之上的开源项目,它可以在没有安装Office的情况下对Word/Excel文档进行读、写、导入、导出等操作。因为是开源项目,可以完全免费使用,而不会有版权问题。最主要的是不需要安装微软的Office,这对于部署在服务器上的项目就非常重要了,因为有的服务器不能安装或无法安装Office;对于Winform项目来说,因为微软的Office的版权,安装文件大等问题,很多的电脑上安装的都是WPS,使用NPOI就不必要求部署的电脑都要安装Office。
1、关于版本
最新版本:2.5.1 发布日期:2020年4月4日
支持.NET Framework 4.0 / .NET Framework 4.5 / .NET Standard 2.0
版本:2.3.0 发布日期:2017年3月20日
支持.NET Framework 2.0 / .NET Framework 4.0
v2.3.0是最后一个支持.NET Framework 2.0的版本。
2、类库文件说明
NPOI.DLL 命名空间包括:NPOI.POIFS(OLE2/ActiveX文档属性读写库)、NPOI.DDF(微软Office Drawing读写库)、NPOI.HPSF(OLE2/ActiveX文档读写库)、NPOI.HSSF(Excel BIFF 97-2003的xls格式 , doc格式读写库)、NPOI.SS(Excel公用接口及Excel公式计算引擎)、NPOI.Util(基础类库,提供了很多实用功能,可用于其他读写文件格式项目的开发);
NPOI.OOXML.DLL 命名空间包括:NPOI.XSSF(Excel 2007(xlsx)格式读写库)、NPOI.XWPF(Word 2007(docx)格式读写库);
NPOI.OpenXml4Net.DLL 命名空间包括:NPOI.OpenXml4Net(OpenXml底层zip包读写库);
NPOI.OpenXmlFormats.DLL 命名空间包括:NPOI.OpenXmlFormats(微软Office与OpenXml对象关系库,它定义了所有OOXML对象和C#对象的映射关系,并协助进行序列化和反序列化);
了解了类库文件的作用,我们在引用的时候就可以只引用自己需要的dll文件,然后using命名空间即可,对于不需要的可以不引用,一般来说,只需要引用NPOI.dll和NPOI.OOXML.dll这两个文件即可;如果只读写xls而不读写xlsx,甚至只引用一个NPOI.dll即可。
3、在Visual Studio中引用DLL文件
在Visual Studio的解决方案资源管理器窗口中的项目下的“引用”上右键->添加引用,浏览到NPOI.DLL所在位置,确定即可。
引用后,记得把它属性里的“复制到本地”选择为 True;
代码里using NPOI.HSSF。
当然,直接简单的方法是不用dll,而用Nuget,但这个方法下载来的还是不太纯洁;),虽然说是官方,但有的还是自己用不到的,比如那个zip。
4、Npoi导入导出Excel操作
接下来就可以使用Npoi对Excel进行导入导出操作了。
5、NPOI之最简操作
最简单的操作之前必须先理解的几个重要对象
IWorkbook --- 对应Excel里的工作簿
ISheet --- 对应Excel里的工作表
IRow --- 对应Excel里的行
ICell --- 对应Excel里的单元格
Workbook对象
通过它可以操作两种格式的Excel,一种是*.xls(HSSFWorkbook),一种是*.xlsx(XSSFWorkbook)
IWorkbook wk = new HSSFWorkbook(); (创建Excel97-2003格式的工作簿)
IWorkbook wk = new XSSFWorkbook();(创建Excel2007-2016格式的工作簿)
ISheet对象
通过它可以操作两种格式的Excel的工作表,一种是*.xls(HSSFSheet),一种是*.xlsx(XSSFSheet)
ISheet sheet = wk.CreateSheet(""); //在工作簿中创建工作表
ISheet sheet = workbook.GetSheetAt(int index);//获取已有的工作表
IRow对象
IRow对象实现对ISheet(工作表)中的行控制,如创建行,获取行
IRow row = sheet.CreateRow(1);//在工作表中创建行
IRow row2 = sheet.GetRow(1);//获取工作表中的行
sheet.RemoveRow(row2);//删除工作表中的行
ICell对象
ICell对象可以实现对行单元格的控制
ICell cell = row.CreateCell(int index);//在行中创建单元格
cell.SetCellValue("Hello");//为单元格赋值
string strGetCellValue = cell.StringCellValue;//获取单元格值
下面创建Excel97-2003格式的xls文件:
1 IWorkbook workbook = new HSSFWorkbook();//创建Excel工作簿(Excel97-2003) 2 ISheet sheet = workbook.CreateSheet("sheet1");//在工作簿中创建工作表 3 IRow row = sheet.CreateRow(1);//在工作表中创建行 4 ICell cell = row.CreateCell(1);//在行中创建单元格 5 cell.SetCellValue("Hello");//为单元格赋值 6 MemoryStream ms = new MemoryStream(); 7 workbook.Write(ms);//写入内存流 8 9 using (FileStream fs = new FileStream(@"D:Npoi20200507.xls", FileMode.Create, FileAccess.Write, FileShare.None, 4096, true))//写入指定的文件 10 { 11 byte[] b = ms.ToArray(); 12 fs.Write(b, 0, b.Length); 13 ms.Close(); 14 fs.Flush(); 15 fs.Close(); 16 }
现在到D盘下去看看,是不是多了个Npoi20200507.xls文件,用Office或WPS打开看看。