来源地址: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的更多相关文章

  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表 ...

  10. NPOI操作EXCEL(一)——npoi基础

    去年项目有一个子模块需要解析上百张不一样的excel表格入库,当时用的NPOI,做了很久...也尝试想把代码分享到oschina,结果没坚持两篇就放弃了. 赶巧的是,昨天运营那边提出要录入一些基础数据 ...

随机推荐

  1. ASP专栏——ASP生成静态文件(用于大量文章)

    对于Web开发人员来说,生成静态文件这个概念并不陌生. 对于Web开发来说,如何能避免客户端访问时不停的查询数据库?现在比较常用的有两种方法,一种是使用缓存技术,将查询出来的结果缓存至缓存框架中,以后 ...

  2. Global::time2StrHHMM_DNT

    /*************************************************** Created Date: 13 Jul 2013 Created By: Jimmy Xie ...

  3. Python编码与解码

    # -*- coding: utf-8 -*- # 直接保存为Python脚本,对照执行结果会好看点. # 实验的内容都是在Python 2.7.x下进行的. # Python3默认采用unicode ...

  4. cadence 16.6 Pspice 仿真步骤

    从ADI官网下载后缀为 cir 的文件,AD8210 为例 进行仿真 1 打开 Cadence -> Release 16.6 -> PSpice Accessories -> Mo ...

  5. Java 包(package)详解

    为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包也采用了树形目录的存储方式.同一 ...

  6. Linux下Hadoop的简单安装

    Hadoop 的安装极为简单,一共只有三步:   安装JDK 安装Hadoop 配置Hadoop     1,安装JDK       下载JDK,ftp传到linux或者linux中下载     切换 ...

  7. ios技术面试题

    1.Difference between shallow copy and deep copy? 浅复制 只拷贝地址 不拷贝地址指向的对象 深复制 拷贝地址 并且指向拷贝的新对象 2.What is ...

  8. C++实现数字媒体二维图像变换

    C++实现数字媒体二维图像变换 必备环境 glut.h 头文件 glut32.lib 对象文件库 glut32.dll 动态连接库 程序说明 C++实现了用glut画正方形,画三角形的功能.并附带放大 ...

  9. 野指针及c++指针使用注意点

    避免野指针的产生 “野指针”的成因主要有: 1)指针变量没有被初始化.任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气.所以,指针变量在创建的同时应当被初始化,要么将指 ...

  10. LCA专题

    标签(空格分隔): LCA 我的个人网站挂了,最近就先用这个来写博客吧.以后争取在这个网站写一些与OI无关的个人爱好的东西. 题目来源:code[VS] 倍增--在线算法 用 $f[i][j]$ 记录 ...