C#使用NPOI對Excel文檔進行讀、寫、導入、導出等操作的dll最新版2.5.1+2.3.0


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打開看看。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM