您的位置:首页 > 其它

NPOI操作EXCEL----------NPOI基础01

2016-02-16 11:28 459 查看
来源地址: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服务入库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: