用C#读取Excel的方法有很多中,由于近期工作需要,需要解析的Excel含有合并单元格以及背景色等特殊要求,故在网上查了一些关于读Excel的方法的优缺点,觉得NPOI能满足我的需要,所以搜索了一些资料做了一些测试,下面有些内容有些是来源于别人的博客,都备有出处,只是想把一些觉得对自己有用的记录一下,望见谅。

我们先说了解一下NPOI的优缺点:

优点:读取数据快,读取方式灵活,包含多个sheet的Excel单元格合并设置单元格字段、颜色、设置单元格为下拉框,并限制输入值,设置单元格只能输入数据等(能解决几乎所有的Excel问题)。

缺点:不能对已经打开的Excel进行操作,需要导入多个dll文件(NPOI、NPOI.HPSF、NPOI.HSSF、NPOI.HSSF.UserModel、NPOI.POIFS、NPOI.Util)

下载地址:http://npoi.codeplex.com

1、常用的基本方法:

创建工作簿                                                 IWorkbook workbook = new XSSFWorkbook();

按指定名称创建Sheet                                   workbook.CreateSheet("SheetName");

移出Sheet                                                 workbook.RemoveSheetAt(SheetIndex);

按名称获得Sheet对象                                   ISheet sheet = workbook.GetSheet("SheetName ");

根据索引获得Sheet对象                                ISheet sheet = workbook.GetSheetAt(SheetIndex);

获得某一个ISheet的所有IRow,通常可以用       ISheet.GetRowEnumerator()

获得某一特定行,可以直接用                          ISheet.GetRow(rowIndex)

工作表中第一个有数据行的行号                       ISheet.FirstRowNum

工作表中最后一个有数据行的行号                    ISheet.LastRowNum

一行中第一个有数据列的列号                          IRow.FirstCellNum

一行中最后一个有数据列的列号                       IRow.LastCellNum

获取sheet所有合并单元格索引                         ISheet.NumMergedRegions

获取某合并单元格的地址(i是合并单元格索引)      ISheet.GetMergedRegion(i)

获得数据类型CellRangeAddress,含起始行号和列号

获取某单元格值                                                 Row.GetCell(j).StringCellValue.Trim()

公式单元格如果是数字可以:                          Row.GetCell(j).NumericCellValue.ToString()

2、NPOI.DLL中包含的模块

NPOI.Util          基础辅助库 
NPOI.POIFS      OLE2格式读写库,主要负责处理DocumentInformation 
NPOI.DDF        Microsoft Drawing格式读写库 
NPOI.SS          Excel 2003和Excel 2007操作库共用的接口库以及公用模块实现,如公式计算库  
NPOI.HPSF       OLE2的Summary Information和Document Summary Information属性读写库 
NPOI.HSSF      Excel BIFF格式读写库,这是用户用的最多的命名空间

3、NPOI.OOXML.DLL中包含的模块(主要是2007版本操作方法)

NPOI.XSSF          Excel 2007操作库,大部分对象都实现了NPOI.SS的接口 
NPOI.XWPF         Word 2007操作库

4、EXCEL单元格值基本类型

Unknown = -1,  // 未知
Numeric = 0,  // 数值型
String = 1,  // 文本型
Formula = 2,  // 公式型
Blank = 3,  // 空白
Boolean = 4,  // 布尔型
Error = 5,  // 错误

参考:http://www.cnblogs.com/csqb-511612371/p/4878059.html

NPOI操作Excel(一)--NPOI基础的更多相关文章

  1. NPOI操作Excel辅助类

    /// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...

  2. NPOI操作excel之写入数据到excel表

    在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...

  3. C#开发中使用Npoi操作excel实例代码

    C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...

  4. 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数

    2.4.1 用NPOI操作EXCEL关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数   NPOI教程:http://www.cnb ...

  5. C# 如何使用NPOI操作Excel以及读取合并单元格等

    C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...

  6. 用NPOI操作EXCEL-锁定列CreateFreezePane()

    public void ExportPermissionRoleData(string search, int roleStatus) { var workbook = new HSSFWorkboo ...

  7. .NET 通过 NPOI 操作 Excel

    目录 .NET 通过 NPOI 操作 Excel 第一步:通过 NuGet 获取 NPOI 包并引入程序集 第二步:引入 NPOI 帮助类 第三步:在程序中调用相应的方法对数据进行导出导入操作 将 D ...

  8. 2.6.2 用NPOI操作EXCEL--设置密码才可以修改单元格内容

    2.6.2 用NPOI操作EXCEL--设置密码       有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完 ...

  9. 使用NPOI操作Excel文件及其日期处理

    工作中经常遇到需要读取或导出Excel文件的情况,而NPOI是目前最宜用.效率最高的操作的Office(不只是Excel哟)文件的组件,使用方便,不详细说明了. Excel工作表约定:整个Excel表 ...

随机推荐

  1. 操作dom影响性能的原因

    为什么dom操作会影响性能? 在浏览器当中,dom的实现和ECMAScript的实现是分离的. 例如,在IE中,ECMAScrit的实现在jscript.dll中,而DOM的实现在mshtml.dll ...

  2. SpringBoot单元测试示例2

    package cn.coreqi.security.controller; import org.junit.Before; import org.junit.Test; import org.ju ...

  3. Linux安装JDK(tar)

    我以JDK1.8为例 ⒈下载 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...

  4. 20165231 2017-2018-2 《Java程序设计》第7周学习总结

    教材学习内容总结 第十一章 MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Community Edition)是最流行的免费下载的开源数据库管理系 ...

  5. Python运维开发基础01-语法基础【转】

    开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶 ...

  6. JS中的!=、== 、!==、===的用法和区别

    var num = 1; var str = '1'; var test = 1; test == num //true 相同类型 相同值 test === num //true 相同类型 相同值 t ...

  7. Ubuntu16下apache2安装ssl阿里云证书

    1.用下面的命令确保ssl模块已经加载进apache: a2enmod ssl 如果你看到了“Module ssl already enabled”这样的信息就说明你成功了,如果你看到了“Enabli ...

  8. js导出excel增加表头、mso-number-format定义数据格式

    问题1:增加表头 js导出表格时,只会导出table里的展现出的内容,如需增加表头等内容需要在页面获取的字符串中拼接表头的相关字符串,详细介绍如下: tableString:新增的表头内容字符串: c ...

  9. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...

  10. POJ 1305

    毕达哥斯三元组的模板题 练习练习 #include<iostream> #include<cstring> #include<cstdio> #include< ...