zoukankan      html  css  js  c++  java
  • 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服务入库

     

     

     



  • 相关阅读:
    TestNg 2.套件测试
    JBPM工作流
    Spring 事务详解
    数据库事务隔离级别及传播行为
    Spring AspectJ基于注解的AOP实现
    Spring 通知(Advice)和顾问(Advisor)
    Spring 代理模式及AOP基本术语
    Spring之BeanFactory及Bean生命周期
    Spring 02多种注入方式和注解实现DI
    Spring 01基础
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5193657.html
Copyright © 2011-2022 走看看