`
hailan321
  • 浏览: 41682 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类

NPOI教程---1.1简介 [ 一个能帮助你直接读写office文件流的库]

阅读更多

本文将通过问答的方式帮助你了解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官方网站: http://npoi.codeplex.com/

一个很不错的教程【博客】:http://www.cnblogs.com/tonyqus/archive/2009/03/16/1409966.html

 

为什么用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 beta,其中包括了以下功能:

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

 

在开发中哪些地方可以使用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的教程

h. 根据POI 3.5开发NPOI 1.5

分享到:
评论

相关推荐

    excel,NPOI教程

    NPOI教程,excel处理教程,NPOI 1.2教程,NPOI一个能帮助你直接读写office文件流的库

    NPOI教程-读写Excel

    NPOI作为国人开发的开源项目,文档完善,更新及时,为.NET开发者提供了便利,主要用于生成Excel报表,搜索引擎模块中Excel中的文本提取,批量生成Excel文件,基于Excel文件模板生成新的Excel等多方面。

    .NET Core使用NPOI导出复杂Word-NPOI-Export-Word-master.zip

    首先看了下GItHub中的源码有一个简单Word导出的示例,然后在看了网上有很多关于NPOI导出Word文档的案例,发现一个特点网上的好像都差不多,对于我而言网上的这些案例完全能够实现我的这个功能,但是感觉看了网上这些...

    Npoi生成Excel 97-2003/ (xls)文件

    POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。  使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office...

    npoi-master-excel操作例程

    What's NPOI This project is the .NET version of POI Java project at http://poi.apache.org/. POI is an open source project which can help you read/write xls, doc, ppt files. It has a wide application. ...

    NPOI源码-不找开excel情况下读写excel

    使用NPOI不打开EXCEL情况下读写。。。。调试成功

    NPOI 使用手册(在没有安装微软Office的情况下读写Office)

    POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。在本文发布时,POI的最新版本是3.5 beta 6。 NPOI 1.x是基于POI 3.x版本开发...

    NPOI 2.0 库(alpha版本)

    POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。 平台要求:VS2010 with .NET 2.0 or .NET 4.0 VS2005 or VS2008 with .NET ...

    NPOI-2.4-稳定版.rar

    NPOI-2.4-稳定版

    NPOI 2.5.1.0_new.zip

    NPOI 2.5.1.0版本,为目前最新版本 亲测可用! NPOI 是 POI 项目的 .NET 版本。POI是一个开源的C#,JAVA读写Excel、WORD等...使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。

    NPOI库文件

    因为导入你必须假设一切情况都是可能的,而生成你只要保证满足你自己需求就可以了,如果把导入需求和生成需求比做两个集合,那么生成需求通常都是导入需求的子集,这一规律不仅体现在Excel读写库中,也体现在pdf读写...

    NPOI-CSDN下载

    NPOI VERSION-2.3.0.0 C# 用于Excel数据导出功能开发

    NPOI.rar_-baijiahao_NPOI word_npoi _npoi帮助文档_npoi教程

    NPOI帮助文档(1.2.3版),是一个好用的Word操作控件的使用教程。

    NPOI读写Excel和第三方dll读写CSV文件

    里面有NPOI读写Excel的代码,方法都是封装好的,直接调用,也还有第三方的dll读写CSV文件,还配上了所有的dll文件,免了找dll的时间,我自己写的,肯定可以,之前传了一个有人评论说报错。

    NPOI 库 1.2.5

    开发平台要求:VS2005 or VS2008 with .NET 2.0 Runtime (SP1) ...POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等。

    NPOI高级文件流

    Excel文件流的底层代码 对Excel文件流操作的NPOI

    Npoi+帮助文档

    NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作

    C#使用npoi操作office案例

    C#使用npoi操作office案例C#使用npoi操作office案例C#使用npoi操作office案例C#使用npoi操作office案例C#使用npoi操作office案例C#使用npoi操作office案例

    labview不需要安装office读写xlsx和xls文件,调用NPOI开源接口方法

    使用labview开发软件多年,觉得labview相对文本语言来说还是有一些限制,就比如labview读写xlsx文件,自带的office插件必须要安装office插件才能使用,或者用报表工具经常会读取不出来,比较麻烦.目前在玩一下C#语言,发现...

    npoi-79962.zip

    npoi-79962.zip

Global site tag (gtag.js) - Google Analytics