1. 程式人生 > >NPOI導出Excel

NPOI導出Excel

creat 的確 idt main 管理 簡單 rect xls 方式

前段時間研究過微軟的Excel導出、table輸出Excel,而它們也存在一些弊端:

  1、對於微軟的Excel導出存在一些弊端,如:需要安裝Office軟件、速度問題;

  2、table輸出Excel在使用過程中發現一個致命的弊端,在一定情況下數據會丟失,因為部門的負責人會針對數據進行導出,分發給相關人員,而接收方接收後發現數據損壞。對於數據丟失我猜測應該屬於導出方式,對於table輸出我猜測應該是在本地會生成一些緩存文件以供導出的Excel進行動態調用,而發送給另一臺機器緩存數據卻未發送因此導致數據丟失。

NPOI導出Excel:

  對於NPOI的使用的確很是方便,能夠快速的制作出我們需要的導出功能,方法簡單直白沒有其它的依賴性,速度也不錯。

  1、使用前需要引用NPOI.dll

技術分享圖片

   可以通過NuGet包管理,檢索NPOI添加到項目中去:

技術分享圖片

技術分享圖片

  2、使用方法。簡單的使用我們只要註重:HSSFWorkbookISheetIRowICell,從名稱可以知道它們的大概用處,我們可以像寫文章一樣的使用它。

    HSSFWorkbook相當於一個Excel對象

    ISheet相當於Excel裏的工作簿

    IRow相當於行

    ICell相當於列

    

 1 using System;
 2 using System.Collections.Generic;
3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 using NPOI.HSSF.UserModel; 8 using NPOI.SS.UserModel; 9 using Sunc.Framework.Repository.Utility.Excel; 10 11 namespace TestConsole 12 { 13 class Program 14 { 15 static void
Main(string[] args) 16 { 17 18 HSSFWorkbook workBook = new HSSFWorkbook(); 19 ISheet sheet = workBook.CreateSheet("工作簿"); 20 IRow row = sheet.CreateRow(0); 21 ICell cell = row.CreateCell(0); 22 cell.SetCellValue("孫超"); 23 24 MemoryStream ms = new MemoryStream(); 25 workBook.Write(ms); 26 var buf = ms.ToArray(); 27 using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "a.xls", FileMode.Create, FileAccess.Write)) 28 { 29 fs.Write(buf, 0, buf.Length); 30 fs.Flush(); 31 } 32 Console.ReadKey(); 33 } 34 35 36 } 37 }

技術分享圖片

  當然SetCellValue屬於一個重載方法,供我們出入各種類型的值

技術分享圖片

  還有樣式的設置

技術分享圖片

當然需求決定使用,對於微軟的我們可以調用宏,這算是一個比較強大的功能了,但是對於需求不高的我們幾乎使用不到,因此適合自己的才是最好的。

個人源碼

參考手冊:NPOI使用手冊

NPOI導出Excel