没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
NPOI是一套基于Excel操作的组件,它不用考虑服务器是否安装了Office,而且读取和写入的速度要比微软的Excel Com组件好快很多,另外微软Excel组件在GC回收时会存在无法结束进程等bug,NPOI完全不用考虑这些。 大家不妨试一下,简单上手,后期还会推出自己关于微软Excel与NPOI组合使用的例子和方法,请大家关注我的博客。
资源推荐
资源详情
资源评论
1
1 1
1 认识
认识认识
认识 NPOI
NPOI NPOI
NPOI
本章将介绍 NPOI 的一些基本信息,包括以下几个部分
•
什么是 NPOI
•
版权说明
•
相关资源
•
团队介绍
•
未来展望
•
各 Assembly 的作用
1.1
1.1 1.1
1.1 什么是
什么是什么是
什么是 NPOI
NPOINPOI
NPOI
NPOI,顾名思义,就是 POI 的.NET 版本。那 POI 又是什么呢?POI 是一套用 Java 写成
的库,能够帮助开发者在没有安装微软 Office 的情况下读写 Office 97-2003 的文件,支持
的文件格式包括 xls, doc, ppt 等。在本文发布时,POI 的最新版本是 3.5 beta 6。
NPOI 1.x 是基于 POI 3.x 版本开发的,与 poi 3.2 对应的版本是 NPOI 1.2,目前最新发布
的版本是 1.2.1,在该版本中仅支持读写 Excel 文件和 Drawing 格式,其他文件格式将在以
后的版本中得到支持。
1.2
1.2 1.2
1.2 版权说明
版权说明版权说明
版权说明
NPOI 采用的是 Apache 2.0 许可证(poi 也是采用这个许可证),这意味着它可以被用
于任何商业或非商业项目,你不用担心因为使用它而必须开放你自己的源代码,所以它对于
很多从事业务系统开发的公司来说绝对是很不错的选择。
当然作为一个开源许可证,肯定也是有一些义务的,例如如果你在系统中使用 NPOI,
你必须保留 NPOI 中的所有声明信息。对于源代码的任何修改,必须做出明确的标识。
完整的 apache 2.0 许可证请见 http://www.phpx.com/man/Apache-2/license.html
1.3
1.3 1.3
1.3 相关资源
相关资源相关资源
相关资源
官方网站:http://npoi.codeplex.com/
POIFS Browser 1.2 下载地址:
http://npoi.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24305
QQ 交流群: 78142590
1.4
1.4 1.4
1.4 团队介绍
团队介绍团队介绍
团队介绍
Tony Qu 来自于中国上海,是这个项目的发起人和开发人员,时区是 GMT+8,2008 年 9
月开始了 NPOI 的开发,负责 NPOI 所有底层库的开发、测试和 bug 修复。个人 blog 地址为
http://tonyqus.cnblogs.com/
Hüseyin Tüfekçilerli 来自于土耳其的伊斯坦布尔,也是这个项目的开发人员,时区
是 GMT+2,2008 年 11 月参与了 NPOI 的开发,主要负责 POIFS Browser 1.0 的开发工作。个
人 blog 地址为 http://huseyint.com/
aTao.Xiang,来自中国,2009 年 8 月开始参与该项目,主要参与了 NPOI 1.2 中文版的
撰写工作和推广工作。个人 blog 地址为 http://www.cnblogs.com/atao/
1.5
1.5 1.5
1.5 回顾与展望
回顾与展望回顾与展望
回顾与展望
目前 POI 版本中的 HWPF(用于 Word 的读写库)还不是很稳定,并非正式发布版本,且
负责 HWPF 的关键开发人员已经离开,所以 NPOI 可能考虑自己重新开发 HWPF。另外,目前
微软正在开发 Open XML Format SDK,NPOI 可能会放弃对 ooxml 的支持,当然这取决于用户
的需求和 Open XML Format SDK 的稳定性和速度。从目前而言,NPOI 有几大优势:
第一,完全基于.NET 2.0,而非.NET 3.0/3.5。
第二,读写速度快(有个国外的兄弟回复说,他原来用 ExcelPackage 生成用了 4-5 个
小时,现在只需要 4-5 分钟)
第三,稳定性好(相对于用 Office OIA 而言,毕竟那东西是基于 Automation 做的,在
Server 上跑个 Automation 的东西,想想都觉得可怕),跑过了将近 1000 个测试用例(来
自于 POI 的 testcase 目录)
第四,API 简单易用,当然这得感谢 POI 的设计师们
第五,完美支持 Excel 2003 格式(据说 myxls 无法正确读取 xls 模板,但 NPOI 可以),
以后也许是所有 Office 2003 格式
希望 NPOI 把这些优势继续发扬下去,这样 NPOI 才会更有竞争力。
1.6
1.61.6
1.6
Assembly
AssemblyAssembly
Assembly 的作用
的作用的作用
的作用
NPOI 目前有好几个 assembly,每个的作用各有不同,开发人员可以按需加载相应的
assembly。在这里大概罗列一下:
NPOI.Util: 基础辅助库
NPOI.POIFS: OLE2 格式读写库
NPOI.DDF: Microsoft Drawing 格式读写库
NPOI.SS: Excel 公式计算库
NPOI.HPSF: OLE2 的 Summary Information 和 Document Summary Information 属性
读写库
NPOI.HSSF : Excel BIFF 格式读写库
2.1
2.1 2.1
2.1 创建基本内容
创建基本内容创建基本内容
创建基本内容
2.1.1
2.1.1 2.1.1
2.1.1 创建
创建创建
创建 Workbook
WorkbookWorkbook
Workbook 和
和和
和 Sheet
Sheet Sheet
Sheet
创建 Workbook 说白了就是创建一个 Excel 文件,当然在 NPOI 中更准确的表示是在内存
中创建一个 Workbook 对象流。
本节作为第 2 章的开篇章节,将做较为详细的讲解,以帮助 NPOI 的学习者更好的理解
NPOI 的组成和使用。
NPOI.HSSF 是专门负责 Excel BIFF 格式的命名空间,供开发者使用的对象主要位于
NPOI.HSSF.UserModel 和 NPOI.HSSF.Util 命名空间下,下面我们要讲到的 Workbook 的创建
用的就是 NPOI.HSSF.UserModel.HSSFWorkbook 类,这个类负责创建.xls 文档。
在开始创建 Workbook 之前,我们先要在项目中引用一些必要的 NPOI assembly,如下
所示:
NPOI.dll
NPOI.POIFS.dll
NPOI.HSSF.dll
NPOI.Util.dll
要创建一个新的 xls 文件其实很简单,只要我们初始化一个新的 HSSFWorkbook 实例就
行了,如下所示:
using
usingusing
using NPOI.HSSF.UserModel;
NPOI.HSSF.UserModel; NPOI.HSSF.UserModel;
NPOI.HSSF.UserModel;
...
......
...
HSSFWorkbook hssfworkbook =
HSSFWorkbook hssfworkbook = HSSFWorkbook hssfworkbook =
HSSFWorkbook hssfworkbook = new
newnew
new HSSFWorkbook();
HSSFWorkbook(); HSSFWorkbook();
HSSFWorkbook();
是不是很方便啊,没有任何参数或设置,但这么创建有一些限制,这样创建出来的
Workbook 在 Excel 中打开是会报错的,因为 Excel 规定一个 Workbook 必须至少带 1 个 Sheet,
这也是为什么在 Excel 界面中,新建一个 Workbook 默认都会新建 3 个 Sheet。所以必须加
入下面的创建 Sheet 的代码才能保证生成的文件正常:
HSSFSheet sheet = hssfworkbook.CreateSheet(
HSSFSheet sheet = hssfworkbook.CreateSheet(HSSFSheet sheet = hssfworkbook.CreateSheet(
HSSFSheet sheet = hssfworkbook.CreateSheet("new sheet"
"new sheet""new sheet"
"new sheet");
););
);
如果要创建标准的 Excel 文件,即拥有 3 个 Sheet,可以用下面的代码:
hssfworkbook.CreateSheet(
hssfworkbook.CreateSheet(hssfworkbook.CreateSheet(
hssfworkbook.CreateSheet("Sheet1"
"Sheet1""Sheet1"
"Sheet1");
););
);
hssfworkbook.CreateSheet(
hssfworkbook.CreateSheet(hssfworkbook.CreateSheet(
hssfworkbook.CreateSheet("Sheet2"
"Sheet2""Sheet2"
"Sheet2");
););
);
h
hh
hssfworkbook.CreateSheet(
ssfworkbook.CreateSheet(ssfworkbook.CreateSheet(
ssfworkbook.CreateSheet("Sheet3"
"Sheet3""Sheet3"
"Sheet3");
););
);
最后就是把这个 HSSFWorkbook 实例写入文件了,代码也很简单,如下所示:
FileStream file =
FileStream file = FileStream file =
FileStream file = new
newnew
new FileStream(
FileStream( FileStream(
FileStream(@"test.xls"
@"test.xls"@"test.xls"
@"test.xls", FileMode.Create);
, FileMode.Create);, FileMode.Create);
, FileMode.Create);
hssfworkbook.Write(file);
hssfworkbook.Write(file);hssfworkbook.Write(file);
hssfworkbook.Write(file);
file.Close();
file.Close();file.Close();
file.Close();
这里假设文件名是 test.xls,,在创建完 FileStream 之后,直接调用 HSSFWorkbook
类的 Write 方法就可以了。
最后你可以打开 test.xls 文件确认一下,是不是有 3 个空的 Sheet。
相关范例请见 NPOI 1.2 正式版中的 CreateEmptyExcelFile 项目。
2.1.2
2.1.2 2.1.2
2.1.2 创建
创建创建
创建 DocumentSummaryInformation
DocumentSummaryInformationDocumentSummaryInformation
DocumentSummaryInformation 和
和和
和 SummaryInformation
SummaryInformationSummaryInformation
SummaryInformation
前一节中我们讲解了如何创建一个新的 Workbook,但在此过程中大家也许会发现一个
细节,这些文件没有包括 DocummentSummaryInformation 和 SummaryInformation 头。如果
你还不是很清楚我在说什么,可以看 POIFS Browser 打开 test.xls 文件后的截图:
你会发现只有 Workbook 目录,其他什么都没有,但事实上一个正常的 xls 文件,比如
说 Excel 生成的 xls 文件是类似下面的结构:
是不是多出来DocumentSummaryInformation 和 SummaryInformation两个头?很多人可
能对 DocumentSummaryInformation和 SummaryInformation很陌生,可能第一次听说这玩意,
没事,这很正常,因为普通用户很少会去使用这些东西,但它们其实比想象中有用。
请看上图中的信息,如作者、标题、标记、备注、主题等信息,其实这些信息都是存储
在 DocummentSummaryInformation 和 SummaryInformation 里面的,这么一说我想大家应该
明白了吧,这些信息是为了快速提取文件信息准备。在 Windows XP 中,也有对应的查看和
修改界面,只是没有 Vista 这么方便,如下所示:
剩余119页未读,继续阅读
资源评论
- scorpionyz2012-10-11比微软那个杀不掉进程的excel api好用多了
- badi8882012-09-21不错 很详细 谢谢分享
大王···
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功