NPOI 是 POI 專案的 .NET 版本。POI是一個開源的Java讀寫Excel、WORD等微軟OLE2元件文件的專案。
使用 NPOI 你就可以在沒有安裝 Office 或者相應環境的機器上對 WORD/EXCEL 文件進行讀寫。NPOI是構建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對Word/Excel文件進行讀寫操作。
(一)傳統操作Excel遇到的問題:
1、如果是.NET,需要在伺服器端裝Office,且及時更新它,以防漏洞,還需要設定許可權允許.NET訪問COM+,如果在匯出過程中出問題可能導致伺服器當機。
2、Excel會把只包含數字的列進行型別轉換,本來是文字型的,Excel會將其轉成數值型的,比如編號000123會變成123。
3、匯出時,如果欄位內容以“-”或“=”開頭,Excel會把它當成公式進行,會報錯。
4、Excel會根據Excel檔案前8行分析資料型別,如果正好你前8行某一列只是數字,那它會認為該列為數值型,自動將該列轉變成類似1.42702E+17格式,日期列變成包含日期和數字的。
(二)使用NPOI的優勢
1、您可以完全免費使用該框架
2、包含了大部分EXCEL的特性(單元格樣式、資料格式、公式等等)
3、專業的技術支援服務(24*7全天候) (非免費)
5、採用面向介面的設計架構( 可以檢視 NPOI.SS 的名稱空間)
6、同時支援檔案的匯入和匯出
7、基於.net 2.0 也支援xlsx 和 docx格式(當然也支援.net 4.0)
8、來自全世界大量成功且真實的測試Cases
9、大量的例項程式碼
11、你不需要在伺服器上安裝微軟的Office,可以避免版權問題。
12、使用起來比Office PIA的API更加方便,更人性化。
13、你不用去花大力氣維護NPOI,NPOI Team會不斷更新、改善NPOI,絕對省成本。
NPOI之所以強大,並不是因為它支援匯出Excel,而是因為它支援匯入Excel,並能“理解”OLE2文件結構,這也是其他一些Excel讀寫庫比較弱的方面。通常,讀入並理解結構遠比匯出來得複雜,因為匯入你必須假設一切情況都是可能的,而生成你只要保證滿足你自己需求就可以了,如果把匯入需求和生成需求比做兩個集合,那麼生成需求通常都是匯入需求的子集,這一規律不僅體現在Excel讀寫庫中,也體現在pdf讀寫庫中,目前市面上大部分的pdf庫僅支援生成,不支援匯入。