当前位置:主页   - 电脑 - 网站开发 - ASP.Net
NPOI简介
来源:网络   作者:   更新时间:2012-08-20
收藏此页】    【字号    】    【打印】    【关闭

  什么是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.POIFSOLE2 Document File System Library
NPOI.DDFMicrosoft Office Drawing format Library
NPOI.HPSFOLE2 Propertyset library (包括SummaryInformation和DocumentSummaryInformation)
NPOI.HSSFMicrosoft Excel BIFF library
NPOI.SSFormula 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文件格式

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

  h. 根据POI 3.5开发NPOI 1.5

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明