zoukankan      html  css  js  c++  java
  • 1、创建一个空白的xls和xlsx文件

    1、创建一个空白的xls文件

    Step1:先引入库NPOI.dll文件

    Step2:

    ①:实例化一个workbook,实为在内存表中创建一个xls文件

    NPOI.HSSF.UserModel.HSSFWorkbook workbook = new NPOI.HSSF.UserModel.HSSFWorkbook();

     但是,如果打开此时的workbook会报错,原因是至少需要包含一个Sheet

    ②:创建一个Sheet,如果方法不带参数,系统自动给出SheetName,带一个参数表示自定义SheetName

    NPOI.SS.UserModel.ISheet sheet = workbook.CreateSheet("Sheet1");

    ③:最后就是把这个HSSFWorkbook实例写入文件了,代码也很简单,如下所示:

     FileStream fs = new FileStream("1.xls", FileMode.Create);
     workbook.Write(fs);
     fs.Close();

    *************************************************************************************

    2:创建一个空白的xlsx文件

    step1:先导入所需要的dll文件

    NPOI.dll

    NPOI.OOXML.dll

    NPOI.OpenXml4Net.dll

    NPOI.OpenXmlFormats.dll

    ICSharpCode.SharpZipLib.dll

    step2:具体代码实现

    NPOI.XSSF.UserModel.XSSFWorkbook workbook = new NPOI.XSSF.UserModel.XSSFWorkbook();
    workbook.CreateSheet("Sheet1");
    FileStream fs = new FileStream("1.xlsx", FileMode.Create);
    workbook.Write(fs);
    fs.Close();

    **********************************************************

    3:自动识别xls和xlsx文件

      NPOI的版本号之所以从1.2.5直接跳到2.0,很大原因是对Office 2007格式的支持,也正因为如此,使用NPOI 2.0会比以前的版本显得稍微复杂些,因为NPOI同时提供了多个命名空间的库,包括HSSF(Excel 2003), XSSF(Excel 2007), XWPF(Word 2007)。

    为了能够在读取时自动识别Excel格式,而不是由你自己去判断,NPOI提供了一个非常方便的类NPOI.SS.WorkbookFactory。

    public class WorkbookFactory
    {
        public static IWorkbook Create(POIFSFileSystem fs){...}
        public static IWorkbook Create(OPCPackage pkg){...}
        public static IWorkbook Create(Stream inputStream){...}
        public static IFormulaEvaluator CreateFormulaEvaluator(IWorkbook workbook){...}
    }

      这里先介绍下POIFSFileSystem和OPCPackage的区别,POIFSFileSystem即OLE2 格式(俗称ActiveX文档格式)的读写库,OPCPackage即OOXML格式的读写库,两套库分别用于Excel 2003和Excel 2007,当然由于是底层库,他们不局限于读取xls和xlsx格式,例如你可以用POIFSFileSystem读取Thumb.db文件格式,具体可参考这里

      知道了POIFSFileSystem和OPCPackage的区别,你应该知道第一、第二个方法是干嘛的了吧,没错,这两个是需要你自己主动判断打开的文件是啥类型的,然后把读到的文件系统传给WorkbookFactory,它会自动根据文件系统的类型返回HSSFWorkbook或XSSFWorkbook,但因为这两个类都实现了IWorkbook接口,所以大部分情况下你不需要去关心你到底在操作哪个类的实例,除非你用到了Excel 2007特有的一些功能时,才需要强类型转换成XSSFWorkbook。

      第三个方法则是今天要介绍的重点,它具有自动识别功能,只要你传Stream对象进去,它就能知道你传进去的到底是xls还是xlsx,然后返回相应的实例。

      最后一个则是返回公式计算对象的,原理类似。HSSF和XSSF都有一个公式计算类,分别是HSSFFormulaEvaluator和XSSFFormulaEvaluator。

      自动识别导入的xls和xlsx文件,代码如下

    FileStream fs = File.OpenRead("1.xlsx");
    NPOI.SS.UserModel.IWorkbook workbook= NPOI.SS.UserModel.WorkbookFactory.Create(fs);
    MessageBox.Show(workbook.GetSheetAt(0).GetRow(0).GetCell(0).StringCellValue);
    fs.Close();
  • 相关阅读:
    方法参数个数最多不宜超过4个
    避免方法中使用大量局部变量
    JQuery学习备忘
    CSS学习备忘
    解析Path方法备忘
    获取差集合的一种实现思路
    前台JSP页面独立化
    requireJs的使用
    handlebar
    移动端h5<a>标签点击样式去除
  • 原文地址:https://www.cnblogs.com/caoyc/p/4545903.html
Copyright © 2011-2022 走看看