NPOI操作EXCEL----------NPOI基础01
来源地址:http://www.cnblogs.com/csqb-511612371/p/4878059.html
先来介绍一下NPOI基本的东西:
1.下载地址:http://npoi.codeplex.com (最新版已经2.2.0.0了)
2.包里面的DLL文件:
NPOI.dll
OOXML.dll
OpenXml4Net.dll
OpenXmlFormats.dll
ICSharpCode.SharpZipLib.dll
3.NPOI 2.0以后的版本都支持OOXML(EXCEL2007及以上版本)。带XSSF的命名空间支持07及以上,HSSF支持03版本。
XSSF中XSSFWorkbook,XSSFSheet,XSSFRow,XSSFCell分别对应EXCEL中工作簿,工作表,行,列。
HSSF中同样有HSSFWorkbook,HSSFSheet,HSSFRow,HSSFCell
它们继承于同一个接口:IWorkbook(命名空间:using NPOI.SS.UserModel;)
可以用如下代码做版本判断(暂时只考虑.xls与.xlsx文件,博主没用.csv)

IWorkbook workbook = null;
if(System.IO.Path.GetExtension(filePath)=="xls")
{
workbook = new HSSFWorkbook(ExcelFileStream);
}
else if(System.IO.Path.GetExtension(filePath)=="xlsx")
{
workbook = new XSSFWorkbook(ExcelFileStream);
}
else
{
throw new exception("文件类型错误");
}

4.常用的基本方法:
创建工作簿 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()
5.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格式读写库,这是用户用的最多的命名空间
6.NPOI.OOXML.DLL中包含的模块(主要是2007版本操作方法)
NPOI.XSSF Excel 2007操作库,大部分对象都实现了NPOI.SS的接口
NPOI.XWPF Word 2007操作库
7.EXCEL单元格值基本类型
Unknown = -1, // 未知
Numeric = 0, // 数值型
String = 1, // 文本型
Formula = 2, // 公式型
Blank = 3, // 空白
Boolean = 4, // 布尔型
Error = 5, // 错误
感觉基本常用的就是这些,需要用到其它接口可以直接查API。
今天也是把NPOI再复习一遍,写了一些基本的操作代码和上传设计。明天上传方法写好再继续贴出来分享给大家....
博主的基本思想是,对每一个excel模板都做一个对应的XML配置文件,里面是规则集。然后所有模板的excel上传均通过一个方法,解析数据与规则集,最后反射到DTO,再根据业务映射到不同实体,调用不同ADD服务入库
NPOI操作EXCEL----------NPOI基础01的更多相关文章
- NPOI操作Excel辅助类
/// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...
- NPOI操作excel之写入数据到excel表
在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...
- C#开发中使用Npoi操作excel实例代码
C#开发中使用Npoi操作excel实例代码 出处:西西整理 作者:西西 日期:2012/11/16 9:35:50 [大 中 小] 评论: 0 | 我要发表看法 Npoi 是什么? 1.整个Exce ...
- 用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 ...
- C# 如何使用NPOI操作Excel以及读取合并单元格等
C#操作Excel方法有很多,以前用的需要电脑安装office才能用,但因为版权问题公司不允许安装office.所以改用NPOI进行Excel操作,基本上一些简单的Excel操作都没有问题,读写合并单 ...
- 用NPOI操作EXCEL-锁定列CreateFreezePane()
public void ExportPermissionRoleData(string search, int roleStatus) { var workbook = new HSSFWorkboo ...
- .NET 通过 NPOI 操作 Excel
目录 .NET 通过 NPOI 操作 Excel 第一步:通过 NuGet 获取 NPOI 包并引入程序集 第二步:引入 NPOI 帮助类 第三步:在程序中调用相应的方法对数据进行导出导入操作 将 D ...
- 2.6.2 用NPOI操作EXCEL--设置密码才可以修改单元格内容
2.6.2 用NPOI操作EXCEL--设置密码 有时,我们可能需要某些单元格只读,如在做模板时,模板中的数据是不能随意让别人改的.在Excel中,可以通过“审阅->保护工作表”来完 ...
- 使用NPOI操作Excel文件及其日期处理
工作中经常遇到需要读取或导出Excel文件的情况,而NPOI是目前最宜用.效率最高的操作的Office(不只是Excel哟)文件的组件,使用方便,不详细说明了. Excel工作表约定:整个Excel表 ...
- NPOI操作EXCEL(一)——npoi基础
去年项目有一个子模块需要解析上百张不一样的excel表格入库,当时用的NPOI,做了很久...也尝试想把代码分享到oschina,结果没坚持两篇就放弃了. 赶巧的是,昨天运营那边提出要录入一些基础数据 ...
随机推荐
- 防火墙设置:虚拟机ping不通主机,但是主机可以ping通虚拟机(转载)
我在Windows7系统安装了虚拟机,通过虚拟机安装了Ubuntu13.04,我设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机. 我的操作是:关 ...
- C#实现斐波那契数列求和
一个比较典型的递归调用问题,总结一下.网上看了一个链接,比较好:http://blog.csdn.net/csd_xiaojin/article/details/7945589 贴个图先,回头再整理: ...
- java项目中读取src目录下的文件
private void getUser(String tmpfile){ Properties props = new Properties(); props.load(DbTask.class.g ...
- centos crontab 定时任务详解
安装crontab: yum install crontabs 说明: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 ...
- java 泛型通配符 extends, super
引自:http://sharewind.iteye.com/blog/1622164 关键字说明 ? 通配符类型 <? extends T> 表示类型的上界,表示参数化类型的可能是T 或是 ...
- java & xml parser
参考: JDK8 API: http://docs.oracle.com/javase/8/docs/api/ DOM: http://www.w3.org/TR/2004/REC-DOM-Level ...
- linux第四周作业
一.用户态内核态与中断 1.库函数把内核调用封装起来. 2.区分内核态和用户态是为了让系统更稳定.Linux里吧用户态定位3级,把内核态定位0级. 3.中断处理就是从用户态进入内核态的主要方法,系统调 ...
- (转)使用 /proc 文件系统来访问 Linux 内核的内容
转载网址:http://www.ibm.com/developerworks/cn/linux/l-proc.html 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口/proc 文件系统是 ...
- 【HDOJ】【4089】Activation
概率DP kuangbin总结中的第5题 题解copy: HDU 4098 题意:有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有一下情况: 1.激活失败,留在队列 ...
- Linux下tcp协议socket的recv函数返回时机分析(粘包)
http://www.vckbase.com/index.php/wv/10http://blog.csdn.net/zlzlei/article/details/7689409 文章一: 当前在网络 ...