NPOI 2.0 教程(一):创建新EXCEL文件

php中文网
发布: 2016-06-07 15:49:16
原创
1722人浏览过

npoi很早就出名了,但是一直以为第三方的不可能有微软的效率高,所以一直都用com来处理excel。 直到某天处理一个大量数据的EXCEL,发现NPOI生成的数据几乎是1秒内就完成了,比传统方法快了几百倍。 惊喜万分,开始学习NPOI的使用,也希望留下一些东西供别人

npoi很早就出名了,但是一直以为第三方的不可能有微软的效率高,所以一直都用com来处理excel。

直到某天处理一个大量数据的EXCEL,发现NPOI生成的数据几乎是1秒内就完成了,比传统方法快了几百倍。

惊喜万分,开始学习NPOI的使用,也希望留下一些东西供别人学习。


今天带来的是第一篇,用NPOI创建一个新的EXCEL文件。


下载地址就不再赘述了。

如果只是简单的处理的话,只需要引用下载压缩包里的

NPOI.dll 和 ICSharpCode.SharpZipLib.dll 

两个文件而已。


好了,开始。

第一步,引用空间

登录后复制

第二步,创建工作簿(workbook)和sheet
HSSFWorkbook wk = new HSSFWorkbook();
//创建一个Sheet
ISheet sheet = wk.CreateSheet("例子");
登录后复制

第三步,创建行和单元格
//在第一行创建行
IRow row = sheet.CreateRow(0);
//在第一行的第一列创建单元格
ICell cell = row.CreateCell(0);
登录后复制

在NPOI里,IRow和ICell是表格结构里的基本元素,必须先通过Create函数创建后才能使用,不然会报错。

  • 知识点
  • 因为在excel里,在某个位置有没有单元格,和单元格里有没有值,这两个是分开保存的。“是否有单元格”也是需要保存的信息之一,也同样占用文件大小。单元格是一个无形的容器,必须首先有容器,才能往里头存放值。
  • 曾经见过一个错误的例子,导出的excel只有一行数据,但是文件大小超过十几MB。就是因为在导出的时候,程序员没有弄清楚单元格和值的区别,以为空单元格不占大小,把65535行的所有格子都创建了,大量的空白行导致文件很大。
  • 实际编程中请注意这一点,需要使用的行才创建,需要使用的单元格才创建。

接下来我们可以使用这个函数对单元格赋值。

cell.SetCellValue("测试");
登录后复制

值得注意的是,SetCellValue的重载中支持
  • bool
  • DateTime
  • double
  • string
  • IRichTextString

这几种格式的参数,但是不像Excel COM一样支持object。所以赋值的时候必须先做好类型转换。


最后,将做好的这个EXCEL保存到硬盘上。

//打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建时不要打开该文件
using (FileStream fs = File.OpenWrite("d:\excel.xls"))
{
    wk.Write(fs);//向打开的这个xls文件中写入并保存。
}
登录后复制

这样就完成了最基本的创建,写入,保存。

不需要释放,不需要安装EXCEL。速度极快,实在很方便。


WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号