使用NPOI导入导出标准Excel

Posted gavanwanggw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用NPOI导入导出标准Excel相关的知识,希望对你有一定的参考价值。

尝试过非常多Excel导入导出方法。都不太理想,无意中逛到oschina时,发现了NPOI。无需Office COM组件且不依赖Office,顿时惊为天人,怀着无比激动的心情写下此文。

 

曾使用过的方法

  1. 直接导出html,改动后缀名为.xls,这种方法有点像骗人的把戏。并且不能再导入
  2. 使用Jet OLEDB引擎来进行导入导出。全然使用sql语句来进行操作,缺点能控制的东西很有限,比方格式就难以控制
  3. 使用Office COM组件进行导入导出。对环境依赖性太强(如“检索 COM 类工厂…”错误);且须要通过打开Excel.exe进程进行操作。尽管能够通过关闭工作表以及Marshal.ReleaseComObject方法来释放资源。但依旧避免不了性能差。

 

关于NPOI

NPOIPOI项目的.NET版本号。是由@Tony Qu(http://tonyqus.cnblogs.com/)等大侠基于POI开发的,能够从http://npoi.codeplex.com/下载到它的最新版本号。

它不使用Office COM组件(Microsoft.Office.Interop.XXX.dll),不须要安装Microsoft Office,支持对Office 97-2003的文件格式。功能比較强大。更具体的说明请看作者的博客或官方站点。

 

它的下面一些特性让我相当喜欢:

  1. 支持对标准的Excel读写
  2. 支持对流(Stream)的读写 (而Jet OLEDB和Office COM都仅仅能针对文件)
  3. 支持大部分Office COM组件的经常使用功能
  4. 性能优异 (相对于前面的方法)
  5. 使用简单。易上手

使用NPOI

本文使用的是它当前的最新版本号1.2.4,此版本号的程序集缩减至2个:NPOI.dllIonic.Zip.dll,直接引用到项目中就可以。

对于我们开发人员使用的对象主要位于NPOI.HSSF.UserModel空间下。主要有HSSFWorkbookHSSFSheetHSSFRowHSSFCell,相应的接口为位于NPOI.SS.UserModel空间下的IWorkbookISheetIRowICell,分别相应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

(c)2006-2024 SYSTEM All Rights Reserved IT常识