Npoi
來自站長百科
NPOI,是POI的.NET版本。而POI是一套用Java寫成的庫,能夠幫助開發(fā)者在沒有安裝微軟Office的情況下讀寫Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。NPOI是構建在POI 3.x版本之上的,它可以在沒有安裝Office的情況下對Word/Excel文檔進行讀寫操作。
優(yōu)勢
一、傳統(tǒng)操作Excel遇到的問題:
- 如果是.NET,需要在服務器端裝Office,且及時更新它,以防漏洞,還需要設定權限允許.NET訪問COM+,如果在導出過程中出問題可能導致服務器宕機。
- Excel會把只包含數字的列進行類型轉換,本來是文本型的,Excel會將其轉成數值型的,比如編號000123會變成123。
- 導出時,如果字段內容以“-”或“=”開頭,Excel會把它當成公式進行,會報錯。
- Excel會根據Excel文件前8行分析數據類型,如果正好你前8行某一列只是數字,那它會認為該列為數值型,自動將該列轉變成類似1.42702E+17格式,日期列變成包含日期和數字的。
二、使用NPOI的優(yōu)勢
- 你不需要在服務器上安裝微軟的Office,可以避免版權問題。
- 使用起來比Office PIA的API更加方便,更人性化。
- 你不用去花大力氣維護NPOI,NPOI Team會不斷更新、改善NPOI,絕對省成本。
NPOI之所以強大,并不是因為它支持導出Excel,而是因為它支持導入Excel,并能“理解”O(jiān)LE2文檔結構,這也是其他一些Excel讀寫庫比較弱的方面。通常,讀入并理解結構遠比導出來得復雜,因為導入你必須假設一切情況都是可能的,而生成你只要保證滿足你自己需求就可以了,如果把導入需求和生成需求比做兩個集合,那么生成需求通常都是導入需求的子集,這一規(guī)律不僅體現(xiàn)在Excel讀寫庫中,也體現(xiàn)在pdf讀寫庫中,目前市面上大部分的pdf庫僅支持生成,不支持導入。
構成
NPOI目前主要由POIFS、DDF、HPSF、HSSF、SS、Util六部分組成。
- NPOI.POIFS OLE2 Document File System Library
- NPOI.DDF Microsoft Office Drawing format Library
- NPOI.HPSF OLE2 Propertyset library
- NPOI.HSSF Microsoft Excel BIFF library
- NPOI.SS Formula Evaluation library
- NPOI.Util 基礎類庫,提供了很多實用功能,可用于其他讀寫文件格式項目的開發(fā)
目前NPOI的最新版是NPOI 1.2.2,其中包括了以下功能:
- 讀寫OLE2文檔
- 讀寫DocummentSummaryInformation和SummaryInformation
- 基于LittleEndian的字節(jié)讀寫
- 讀寫Excel BIFF格式
- 識別并讀寫Excel BIFF中的常見Record,如RowRecord, StyleRecord, ExtendedFormatRecord
- 支持設置單元格的高、寬、樣式等
- 支持調用部分Excel內建函數,比如說sum, countif以及計算符號
- 支持在生成的XLS內嵌入打印設置,比如說橫向/縱向打印、縮放、使用的紙張等。
總結
NPOI作為國人開發(fā)的開源項目,文檔完善,更新及時,為.NET開發(fā)者提供了便利,主要用于生成Excel報表,搜索引擎模塊中Excel中的文本提取,批量生成Excel文件,基于Excel文件模板生成新的Excel等多方面。