使用NPOI导入导出标准Excel
Posted gavanwanggw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用NPOI导入导出标准Excel相关的知识,希望对你有一定的参考价值。
尝试过非常多Excel导入导出方法。都不太理想,无意中逛到oschina时,发现了NPOI。无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文。
曾使用过的方法
- 直接导出html,改动后缀名为.xls,这种方法有点像骗人的把戏。并且不能再导入
- 使用Jet OLEDB引擎来进行导入导出。全然使用sql语句来进行操作,缺点能控制的东西很有限,比方格式就难以控制
- 使用Office COM组件进行导入导出。对环境依赖性太强(如“检索 COM 类工厂…”错误);且须要通过打开Excel.exe进程进行操作。尽管能够通过关闭工作表以及Marshal.ReleaseComObject方法来释放资源。但依旧避免不了性能差。
关于NPOI
NPOI是POI项目的.NET版本号。是由@Tony Qu(http://tonyqus.cnblogs.com/)等大侠基于POI开发的,能够从http://npoi.codeplex.com/下载到它的最新版本号。
它不使用Office COM组件(Microsoft.Office.Interop.XXX.dll),不须要安装Microsoft Office,支持对Office 97-2003的文件格式。功能比較强大。更具体的说明请看作者的博客或官方站点。
它的下面一些特性让我相当喜欢:
- 支持对标准的Excel读写
- 支持对流(Stream)的读写 (而Jet OLEDB和Office COM都仅仅能针对文件)
- 支持大部分Office COM组件的经常使用功能
- 性能优异 (相对于前面的方法)
- 使用简单。易上手
使用NPOI
本文使用的是它当前的最新版本号1.2.4,此版本号的程序集缩减至2个:NPOI.dll、Ionic.Zip.dll,直接引用到项目中就可以。
对于我们开发人员使用的对象主要位于NPOI.HSSF.UserModel空间下。主要有HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell,相应的接口为位于NPOI.SS.UserModel空间下的IWorkbook、ISheet、IRow、ICell,分别相应Excel文件、工作表、行、列。
简单演示一下创建一个Workbook对象,加入一个工作表,在工作表中加入一行一列:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; public class NPOIWrite { void CreateSheet() { IWorkbook
workbook = new HSSFWorkbook(); //创建Workbook对象 ISheet
sheet = workbook.CreateSheet( "Sheet1" ); //创建工作表 IRow
row = sheet.CreateRow(0); //在工作表中加入一行 ICell
cell = row.CreateCell(0); //在行中加入一列 cell.SetCellValue( "test" ); //设置列的内容 } } |
对应的读代替码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
using System.IO; using .Net Core+NPOI快速导入导出Excel
|