程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> NPOI簡介

NPOI簡介

編輯:關於.NET

什麼是NPOI?

NPOI,顧名思義,就是POI的.NET版本。那POI又是什麼呢?POI是一套用Java寫成的庫,能夠幫助開 發者在沒有安裝微軟Office的情況下讀寫Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等 。目前POI的穩定版本中僅支持Excel文件格式xls,其他的都屬於不穩定版本(放在poi的scrachpad目錄 中)。NPOI是構建在POI 3.x版本之上的,本月發布的NPOI 1.2是對應於POI 3.2 final的,所以它支持 Excel文件讀寫,但由於人手和精力原因,還沒有實現讀寫Word, PowerPoint, Visio的文件格式。

NPOI的官方網站是啥?

npoi.codeplex.com

為什麼用NPOI?

因為它能夠幫助你生成真正的Office文件格式,比如說Excel文件格式。我曾經看到好幾個園友發過 有關如何生成Excel報表的帖子,大家確實花了很多心思,具體的帖子如下:

生成Excel高級報表(用的是Office PIA庫)

http://www.cnblogs.com/xiaobier/archive/2008/10/13/1310399.html

Datagrid數據導出到excel文件的三種方法

http://www.cnblogs.com/xieduo/articles/606202.html

其中提到了的2種方法分別是:cvs法、html法

.net 操作 EXCEL

http://www.cnblogs.com/jhobo/archive/2009/02/17/1392423.html

其中提到了Office PIA法、OLEDB法、OPENXML法

特別是其中的cvs法和html法值得提一下,這得感謝Microsoft Office對於格式的強大兼容性,貌似 國產某某Office軟件就無法正常顯示基於html的xls文件。

好了,回到我們的問題上,為什麼要用NPOI呢?

第一點,你不需要在服務器上安裝微軟的Office,可以避免版權問題。

第二點,使用起來比Office PIA的API更加方便,更人性化。

第三點,你不用去花大力氣維護NPOI,NPOI Team會不斷更新、改善NPOI,絕對省成本。

第四點,很多事情是html和cvs法做不到的,比如說公式計算[Cell C1]=A1+B1*A2、單元格高級樣式 (如文本旋轉、對齊、寬度)等,其中公式計算可以適當減輕服務器端的計算壓力

第五點,你很難保證你的客戶機器上都安裝了Office 2007或Office Compatiblity Pack for Office 2003,出於向前兼容的考慮,還是生成Office 97-2003格式比較可靠

當然有人要說了,那我用myXls等同類產品可不可以?當然可以,純屬個人喜好,這就好比你願意用 NHibernate還是NBear,完全可以自由選擇。

NPOI由哪些東西組成?

NPOI目前主要由以下部分組成

NPOI.POIFS OLE2 Document File System Library NPOI.DDF Microsoft Office Drawing format Library NPOI.HPSF OLE2 Propertyset library (包括SummaryInformation和 DocumentSummaryInformation) NPOI.HSSF Microsoft Excel BIFF library NPOI.SS Formula Evaluation library NPOI.Util 基礎類庫,提供了很多實用功能,可用於其他讀寫文件格式項目的開發

NPOI目前的版本如何?包括哪些功能?

目前NPOI的最新版是NPOI 1.2 alpha,其中包括了以下功能:

a. 讀寫OLE2文檔

b. 讀寫DocummentSummaryInformation和SummaryInformation

c. 基於LittleEndian的字節讀寫

d. 讀寫Excel BIFF格式

e. 識別並讀寫Excel BIFF中的常見Record,如RowRecord, StyleRecord, ExtendedFormatRecord

f. 支持設置單元格的高、寬、樣式等

g. 支持調用部分Excel內建函數,比如說sum, countif以及計算符號

h. 支持在生成的Xls內嵌入打印設置,比如說橫向/縱向打印、縮放、使用的紙張等

i. ……  (功能太多,無法一一例舉,大家自己研究吧)

下載地址:http://npoi.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18983

在開發中哪些地方可以使用NPOI

a. 生成Excel報表

b. Excel中的文本提取(主要用於搜索引擎)

c. 批量生成Excel文件

d. 基於Excel文件模板生成新的Excel

e. 研究Excel BIFF文件格式及OLE2文件格式

NPOI的最終目標是什麼?

a. 能夠讀寫幾乎所有的Office 97-2003文件格式,至少能夠支持Word, PowerPoint, Excel, Visio 的格式,其他的會根據實際需求而定。

b. 作為教學Office文件格式的“活”教材,也可作為研究生階段研究數據結構的教材。

即使是目前的1.2版本也很不完善,支持的Excel功能還很有限,沒有搞過NPOI的研發,包括我在內的 很多人很難想象微軟這樣一個Excel軟件的開發量,其中除了我們常用的基本功能以外,還有很多內置函 數的實現、對行進行分組、行的鎖定、表單的保護等。說實話有些功能我也是第一次聽說,是在開發中 一邊看Excel界面一邊實現的(呵呵,是不是很土)。由於Office 2007為了兼容Office 97-2003,在其 基礎上增加了很多新的Record,所以要生成真正意義上的全新的Excel BIFF很難(話說微軟的開發速度 賊快)。

在NPOI以後的版本中還會支持Pivot表和圖表(Chart),其實你在poi的svn中已經可以看到最新的 pivot和chart的代碼了,只是還在開發中,沒有發布正式版本,估計今年中旬會發一個新的版本。

我也想研究Office文件格式,有沒有相關的文檔和工具可供參考?

首先是文件格式的說明文檔,你可以去微軟的官方網站下載: http://www.microsoft.com/interop/docs/officebinaryformats.mspx

接著是,我和Huseyin共同開發了POIFS Browser,目前的版本是1.2 beta,已經能夠識別Excel BIFF 了,因為是基於NPOI 1.2 alpha的。

你可以去http://npoi.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24305下載。

我可以參加NPOI開發組嗎?

當然可以,我非常歡迎大家加入NPOI Team,因為目前狂缺人手,很多事情要做,比如說實現讀寫 Word格式的庫,即HWPF;還需要有人幫忙一起寫文檔、寫范例、寫教程。目前團隊中只有2個人,我和 Huseyin(土耳其人),最近Huseyin也很忙,沒時間維護NPOI,所以我很需要你的加入。大家有興趣可 以到http://npoi.codeplex.com/Thread/View.aspx?ThreadId=36157回帖,或者直接發郵件給我(具體 郵件地址見我blog的左邊欄)。

NPOI Team下一步准備干嘛?

上一個問題中提到事情真的很多,下面羅列一下:

a. 使Excel讀寫庫(HSSF)更加穩定

b. 開發HSSF對Pivot Table和Chart的支持

c. 開發Word讀寫庫(HWPF)、PowerPoint讀寫庫(HSLF)

d. 把HSSF的注釋補全,把java的注釋轉成.NET的,便於用NDoc生成文檔和智能感知

e. 寫NPOI 1.2的范例(目前只有10個左右,目標是>50個,類似於微軟的SDK,這樣方便大家學習 和理解)

f.寫NPOI 1.2的教程

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved