什么是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?
因为它能够帮助你生成真正的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
S在开发中哪些地方可以使用NPOI
a. 生成Excel报表
b. Excel中的文本 (主要用于搜索引擎?/p>
c. 批量生成Excel文件
d. 基于Excel文件模板生成新的Excel
e. 研究Excel BIFF文件格式及OLE2文件格式