NPOI 1.2簡介和教程目錄


作者:Tony Qu

========================================

[更新] NPOI 1.2.4 新教程地址:http://tonyqus.sinaapp.com

========================================

NPOI 微博: http://weibo.com/npoi

NPOI QQ交流群: 

群1:189925337

群2:124527967

群3: 116053476

 

更新

2009.3.24  把npoi 1.2 alpha的鏈接換成NPOI 1.2 beta

2009.11.18  把npoi 1.2 beta的鏈接換成NPOI 1.2.1; 增加NPOI教程鏈接

2009.12.1 增加QQ群

===================================================

本文將通過問答的方式幫助你了解NPOI。

 

什么是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.1,其中包括了以下功能:

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=19351

 

在開發中哪些地方可以使用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,已經能夠識別Excel BIFF了。

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

 

我可以參加NPOI開發組嗎?

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

 

NPOI有教程嗎?

有,該教程是為NPOI 1.2寫的,詳細目錄請見http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html

 

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的教程

作者:Tony Qu & aTao.Xiang

========================================

[更新] NPOI 1.2.4 新教程地址:http://tonyqus.sinaapp.com/

========================================

NPOI官方網站:http://npoi.codeplex.com/ 

QQ交流群: 124527967, 116053476, 189925337

 

聲明:本教程未經許可不得用於任何商業目的

目錄更新日期:2010年1月5日

 

很多人可能對NPOI還很陌生,別擔心,通過本教程你將對NPOI有進一步的認識和理解。

在此,特別感謝aTao.xiang 2個多月的無私奉獻,正是因為他,我們才能看到這份教材的完整版,感動ing~。

 

目錄

1. 認識NPOI

 

2. 使用NPOI生成xls文件

2.1 創建基本內容

2.1.1 創建Workbook和Sheet

2.1.2 創建DocumentSummaryInformation和SummaryInformation

2.1.3 創建單元格

2.1.5 創建批注

2.1.6 創建頁眉和頁腳

 

2.2 單元格操作

2.2.1 設置格式

2.2.2 合並單元格

2.2.3 對齊相關設置

2.2.4 使用邊框

2.2.5 字體設置

2.2.6 背景和紋理

2.2.7 設置寬度和高度

 

2.3 使用Excel公式

2.3.1 基本計算

2.3.2 SUM函數

2.3.3 日期函數

2.3.4 字符串相關函數

2.3.5 IF函數

2.3.6 CountIf和SumIf函數

2.3.7 Lookup函數

2.3.8 隨機數函數

2.3.9 通過NPOI獲得公式的返回值

 

2.4 創建圖形

2.4.1 畫線

2.4.2 畫矩形

2.4.3 畫圓形

2.4.4 畫Grid

2.4.5 插入圖片

 

2.5 打印相關設置

 
2.6 高級功能

2.6.1 調整表單顯示比例

2.6.2 設置密碼

2.6.3 組合行、列

2.6.4 鎖定列

2.6.5 顯示/隱藏網格線

2.6.6 設置初始視圖的行、列

2.6.7 數據有效性

2.6.8 生成下拉式菜單

 

3. 項目實踐

3.1 基於.xls模板生成Excel文件

3.2 生成九九乘法表

3.3 生成一張工資單

3.4 從xls文件中抽取文本

3.5 巧妙使用Excel Chart

3.6 導入Excel文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM