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