什么是NPOI?

NPOI 它是 POI 项目的 .NET 版本号。

POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。

使用 NPOI 你就能够在没有安装 Office 或者对应环境的机器上对 WORD/EXCEL 文档进行读写。NPOI是构建在POI 3.x版本号之上的。它能够在没有安装Office的情况下对Word/Excel文档进行读写操作。

传统操作Excel遇到的问题

1、假设是.NET,须要在server端装Office。且及时更新它。以防漏洞,还须要设定权限同意.NET訪问COM+,假设在导出过程中出问题可能导致server宕机。

2、Excel会把仅仅包括数字的列进行类型转换,本来是文本型的。Excel会将其转成数值型的。比方编号000123会变成123。

3、导出时,假设字段内容以“-”或“=”开头。Excel会把它当成公式进行,会报错。

4、Excel会依据Excel文件前8行分析数据类型,假设正好你前8行某一列仅仅是数字。那它会觉得该列为数值型,自己主动将该列转变成类似1.42702E+17格式,日期列变成包括日期和数字的。

NPOI优势

1、您能够全然免费使用该框架

2、包括了大部分EXCEL的特性(单元格样式、数据格式、公式等等)

3、专业的技术支持服务(24*7全天候) (非免费)

4、支持处理的文件格式包含xls,xlsx,
docx.

5、採用面向接口的设计架构( 能够查看 NPOI.SS 的命名空间)

6、同一时候支持文件的导入和导出

7、基于.net 2.0 也支持xlsx 和 docx格式(当然也支持.net 4.0)

8、来自全世界大量成功且真实的測试Cases

9、大量的实例代码

11、你不须要在server上安装微软的Office。能够避免版权问题。

12、使用起来比Office PIAAPI更加方便,更人性化。

13、你不用去花大力气维护NPOINPOI Team会不断更新、改善NPOI。绝对省成本。

注意:以上所有来摘抄于百度

小编理解

传统的是使用ExcelAutomation进行Excel文件读写,对Excel版本号有要求。而且速度慢,有安全性,并发性问题。

传统的做法,请详见一下博客

http://blog.csdn.net/sundenskyqq/article/details/5440976

NPOI是一款轻量级的进行XLS文件读写的开发包,全然是二进制操作。不依赖与Excel。

详细操作

下载NPOI工具包

http://download.csdn.net/detail/zhouchaoqiang/7458821

以后使用的时候,直接加入引用就可以

样例

简介

Workbook 工作薄。sheet页,row行,cell 单元格

我们恐怕对Excel并不陌生吧。上面的几个英文单词,都应该知道是什么意思吧!用NPOI操作的时候。主要是对这几个名字进行的操作

简单的导出操作

Imports NPOI.SS.UserModel
Imports NPOI.HSSF.UserModel
Imports System.IO Public Class Form1 'Workbook 工作薄,sheet页,row行。cell 单元格
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'创建一个工作薄
Dim hssfworkbook As New HSSFWorkbook()
'创建一页
Dim sheet1 As ISheet = hssfworkbook.CreateSheet("好的")
'定义一行
Dim rowHeader As IRow = sheet1.CreateRow(0) '对第一行操作
rowHeader.CreateCell(0, CellType.STRING).SetCellValue("你好") '第一个单元格的内容
'定义一个数据流
Dim stream As Stream = File.OpenWrite("E:/2.XLS") '保存的路径
'写入操作
hssfworkbook.Write(stream)
'最后会在保存的路径下生成
End Sub
End Class

样例

在做机房收费系统的时候。须要依据DataGridView中的数据,如图所看到的。来导出Excel表。

一下是代码。

    Sub ExportToExcell(ByVal DataGrid As DataGridView)
'假设dataGrid没有记录的话,给出提示
If DataGrid.RowCount = 0 Then
MsgBox("没有记录")
Exit Sub
End If
'定义保存对话框对象
Dim sdfExport As New SaveFileDialog
'保存的文件类型
sdfExport.Filter = "Excel文件|*.xls"
'显示保存对话框
If sdfExport.ShowDialog = False Then
Return
End If
'保存文件名称
Dim fileName As String = sdfExport.FileName
'文件名称不能为空
If fileName = "" Then
MsgBox("文件名称不能为空")
Exit Sub
End If
'定义写入流
Dim stream As Stream
'创建一个工作薄
Dim workbook As New HSSFWorkbook
'创建一页
Dim sheet As ISheet = workbook.CreateSheet("导出数据")
'创建一行
Dim rowHeader As IRow = sheet.CreateRow(0)
'写入datagridview的表头
For c = 0 To DataGrid.ColumnCount - 1
rowHeader.CreateCell(c, CellType.STRING).SetCellValue(DataGrid.Columns(c).HeaderText) Next '通过循环来写入datagrid中的数据
For i = 1 To DataGrid.RowCount - 1
rowHeader = sheet.CreateRow(i)
For b = 0 To DataGrid.ColumnCount - 1
rowHeader.CreateCell(b, CellType.STRING).SetCellValue(DataGrid.Rows(i).Cells(b).Value.ToString())
Next
Next
'写入数据流
stream = File.OpenWrite(fileName)
workbook.Write(stream)
'关闭数据流
stream.Close()
MsgBox("导出成功") End Sub

小结:事实上也没什么,刚才也说了,就是对Workbook,sheet,row,cell的操作,仅仅要你找到所须要的属性,一切OK。当然了NPOI对Excel的操作功能还有非常多。假设大家有兴趣的话。能够參见下面博客。

http://www.cnblogs.com/atao/category/209358.html

版权声明:本文博主原创文章,博客,未经同意不得转载。

Excel阅读器NPOI的更多相关文章

  1. 近日测试发现所有Excel相关功能均会抛异常,查后发现与福昕阅读器不兼容

    报这种错: System.Runtime.InteropServices.COMException (0x80010105): 服务器出现意外情况. (异常来自 HRESULT:0x80010105 ...

  2. Silverlight类百度文库在线文档阅读器

    百度文库阅读器是基于Flash的,用Silverlight其实也可以做. 我实现的在线阅读器可以应用于内网文档发布,在线阅览审批等.没有过多的堆积功能,专注于核心功能.主要有以下特性: 1. 基于XP ...

  3. Silverlight类百度文库在线文档阅读器(转)

    百度文库阅读器是基于Flash的,用Silverlight其实也可以做. 我实现的在线阅读器可以应用于内网文档发布,在线阅览审批等.没有过多的堆积功能,专注于核心功能.主要有以下特性: 1. 基于XP ...

  4. 电子书及阅读器Demo

    电子书阅读器(Kindle,电子纸技术.LCD.电子墨水技术等: 亚马逊/当当网站)  电子书产业可分5大环节:内容供应商.数字格式制作商.内容流通服务平台.传输平台以及终端阅读器产品. 全球电子书市 ...

  5. Atitit rss没落以及替代品在线阅读器

    Atitit rss没落以及替代品在线阅读器 1.1. 对RSS的疯狂追逐,在2005年达到了一个高峰.1 1.2. Rss的问题,支持支rss,不支持url1 1.3. ,博客受到社交网络的冲击.s ...

  6. RSS阅读器

    RSS阅读器(Really Simple Syndication)是一种软件/程序,实质都是为了方便地读取RSS和Atom文档.大概就是实现了订阅式阅读,推送用户感兴趣的新闻,博客等(比如等某位博主更 ...

  7. CozyRSS开发记录0-RSS阅读器开坑

    CozyRSS开发记录0-RSS阅读器开坑 1.RSS RSS,全名是Really Simple Syndication,简易信息聚合. 关于RSS相关的介绍,网上可以很容易的找到.RSS阅读器是我几 ...

  8. Ubuntu 14.04 安装pdf阅读器

    1. 个人推荐 okular. 关于安装okular的原因,可以很好的做到护眼功能. Ubuntu 14.04 自带的阅读器,因为白色太刺眼,长时间使用对眼睛不好. 对于,长时间编程的朋友们习惯夜间模 ...

  9. Java网络编程之流——流、过滤器、阅读器和书写器

    Java的I/O建立于流(Stream)之上.输入流读取数据:输出流写入数据.所有的输出流都有相同的基本方法来写入数据,所有输入流也使用相同的基本方法来读取数据.在创建流之后,你通常可以忽略在读写时的 ...

随机推荐

  1. SharePoint场管理-PowerShell(二)

    1. 合并Log文件 Merge-SPLogFile –Path E:\Logs\MergedLog.log –StartTime "1/19/2010" –Overwrite 2 ...

  2. Html 内嵌 选择器属性 Dom操作 JavaScript 事件

    HTML标签: 一.通用标签(一般标签) 1.格式控制标签 <font color="#6699aa" face="楷体" size="24&q ...

  3. Delphi的类型转换 good

    Delphi是一种强类型转换的语言.在VC中,赋值符用″=″,例如x=1;到了Delphi赋值符就变成了″:=″,例如x:=1. 从赋值时用符号″:=″而不用″=″,就隐约可见Delphi对类型匹配要 ...

  4. C语言信号学习笔记

    在C语言中,对于错误有很多处理方式.然而,今天学习了信号处理,感觉这种处理方式十分灵活,特此记录. 关于信号处理的函数包含于头文件<signal.h>中.所谓的信号,多指出乎程序员意料的行 ...

  5. 名字修饰约定extern "C"与extern "C++"浅析

    所谓名字修饰约定,就是指变量名.函数名等经过编译后重新输出名称的规则. 比如源代码中函数名称为int Func(int a,int b),经过编译后名称可能为?Func@@YAHHH@Z.?Func@ ...

  6. ZOJ 1171 Sorting the Photos

    1. 题目描述 给你一叠照片,有的正面朝上,有的反面朝上,朝上的用字母U,朝下的用字母D 可以从一个位置开始到最顶端,把这一叠拿出来,反转,然后再放回那一叠照片上面. 试求出最少的翻转次数,使所有的照 ...

  7. MongoDB在实际项目

    MongoDB在实际项目中的使用   MongoDB简介 MongoDB是近些年来流行起来的NoSql的代表,和传统数据库最大的区别是支持文档型数据库.当然,现在的一些数据库通过自定义复合类型,可变长 ...

  8. 遍历指定包名下所有的类(支持jar)(转)

    支持包名下的子包名遍历,并使用Annotation(内注)来过滤一些不必要的内部类,提高命中精度. 通过Thread.currentThread().getContextClassLoader()获取 ...

  9. 从零开始,使用python快速开发web站点(1)

    环境:ubuntu 12.04 python版本:  2.73 ok,首先,既然是从零开始,我们需要的是一台可以运行的python的计算机环境,并且假设你已经安装好了python, (ubuntu 或 ...

  10. jQuery Mobile 是创建移动 web 应用程序的框架。

    jQuery Mobile jQuery Mobile 是创建移动 web 应用程序的框架. jQuery Mobile 适用于所有流行的智能手机和平板电脑. jQuery Mobile 使用 HTM ...