Excel阅读器NPOI
什么是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全天候) (非免费)
5、採用面向接口的设计架构( 能够查看 NPOI.SS 的命名空间)
6、同一时候支持文件的导入和导出
7、基于.net 2.0 也支持xlsx 和 docx格式(当然也支持.net 4.0)
8、来自全世界大量成功且真实的測试Cases
9、大量的实例代码
11、你不须要在server上安装微软的Office。能够避免版权问题。
12、使用起来比Office PIA的API更加方便,更人性化。
13、你不用去花大力气维护NPOI,NPOI 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的更多相关文章
- 近日测试发现所有Excel相关功能均会抛异常,查后发现与福昕阅读器不兼容
报这种错: System.Runtime.InteropServices.COMException (0x80010105): 服务器出现意外情况. (异常来自 HRESULT:0x80010105 ...
- Silverlight类百度文库在线文档阅读器
百度文库阅读器是基于Flash的,用Silverlight其实也可以做. 我实现的在线阅读器可以应用于内网文档发布,在线阅览审批等.没有过多的堆积功能,专注于核心功能.主要有以下特性: 1. 基于XP ...
- Silverlight类百度文库在线文档阅读器(转)
百度文库阅读器是基于Flash的,用Silverlight其实也可以做. 我实现的在线阅读器可以应用于内网文档发布,在线阅览审批等.没有过多的堆积功能,专注于核心功能.主要有以下特性: 1. 基于XP ...
- 电子书及阅读器Demo
电子书阅读器(Kindle,电子纸技术.LCD.电子墨水技术等: 亚马逊/当当网站) 电子书产业可分5大环节:内容供应商.数字格式制作商.内容流通服务平台.传输平台以及终端阅读器产品. 全球电子书市 ...
- Atitit rss没落以及替代品在线阅读器
Atitit rss没落以及替代品在线阅读器 1.1. 对RSS的疯狂追逐,在2005年达到了一个高峰.1 1.2. Rss的问题,支持支rss,不支持url1 1.3. ,博客受到社交网络的冲击.s ...
- RSS阅读器
RSS阅读器(Really Simple Syndication)是一种软件/程序,实质都是为了方便地读取RSS和Atom文档.大概就是实现了订阅式阅读,推送用户感兴趣的新闻,博客等(比如等某位博主更 ...
- CozyRSS开发记录0-RSS阅读器开坑
CozyRSS开发记录0-RSS阅读器开坑 1.RSS RSS,全名是Really Simple Syndication,简易信息聚合. 关于RSS相关的介绍,网上可以很容易的找到.RSS阅读器是我几 ...
- Ubuntu 14.04 安装pdf阅读器
1. 个人推荐 okular. 关于安装okular的原因,可以很好的做到护眼功能. Ubuntu 14.04 自带的阅读器,因为白色太刺眼,长时间使用对眼睛不好. 对于,长时间编程的朋友们习惯夜间模 ...
- Java网络编程之流——流、过滤器、阅读器和书写器
Java的I/O建立于流(Stream)之上.输入流读取数据:输出流写入数据.所有的输出流都有相同的基本方法来写入数据,所有输入流也使用相同的基本方法来读取数据.在创建流之后,你通常可以忽略在读写时的 ...
随机推荐
- CloseHandle(),TerminateThread(),ExitThread()的差别
线程的handle用处: 线程的handle是指向"线程的内核对象"的,而不是指向线程本身.每一个内核对象仅仅是内核分配的一个内存块,而且仅仅能由内核訪问.该内存块是一种数据结构, ...
- 深入分析 Java 中的中文编码问题(1)
几种常见的编码格式 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是如何表示我们人类能够理解的符号的,这些符号也就是我们人类使用的语言 ...
- Java学习之道:jdk环境变量配置方法
JDK(Java Development Kit)是整个Java的核心,包含了Java执行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,无论是做JAVA开发还是做安卓开发,都必须 ...
- Qt线程同步操作用QWaitCondition QMutex
可以看到Qt提供了一个等待事件发生的类QWaitCondition,当条件满足时可以唤醒其它等待的线程. 写一个类可以在线程间实现同步功能 #ifndef THREADEVENT_H #define ...
- C语言数据结构----递归的应用(八皇后问题的具体流程)
本节主要讲八皇后问题的基本规则和递归回溯算法的实现以及具体的代码实现和代码分析. 转载请注明出处.http://write.blog.csdn.net/postedit/10813257 一.八皇后问 ...
- 开源工具DbUtils的使用(数据库的增删改查)
开源工具DbUtils的使用(数据库的增删改查) 一.DbUtils简介: DBUtils是apache下的一个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果 ...
- FreeNAS 9.1.1 发布,网络存储系统 - 开源中国社区
FreeNAS 9.1.1 发布,网络存储系统 - 开源中国社区 FreeNAS 9.1.1 发布,网络存储系统
- 开发测试时给 Kafka 发消息的 UI 发送器――Mikasa
开发测试时给 Kafka 发消息的 UI 发送器――Mikasa 说来话长,自从入了花瓣,整个人就掉进连环坑了. 后端元数据采集是用 Storm 来走拓扑流程的,又因为 @Zola 不是很喜欢 Jav ...
- 灰度共生矩阵(GLCM) 及matlab代码实现
原地址:http://blog.csdn.net/bookwormno1/article/details/7962466 这几天学习灰度共生矩阵,现记录如下: 讲灰度共生矩阵比较好的一份百度文库文档: ...
- Cocos2dx 3.x创建Layer的步骤
创建 1.新建类文件.注意文件夹为Classes下.否则文件不能正常找到. 2.改动预编译头.如用VS,默觉得#pragma once,为了兼容,改为#ifndef | #define | #endi ...