zoukankan      html  css  js  c++  java
  • NPOI操作EXCEL

    1. 下载DLL  官方下载地址: http://npoi.codeplex.com/releases

    2. 5个DLL全部添加到程序的引用中

    3. NPOI里面的管理层次为:workbook->worksheet->row->cell. 这些对象全部都是内存对象。

    4. 具体操作,网上有许多,需要注意的是

    --读取时,workbook是从FileStream中生成的,

      FileStream fs = new FileStream(tbNewVer.Text, FileMode.Open, FileAccess.Read)

      XSSFWorkbook wbnew = new XSSFWorkbook(fs);

      奇怪的是,fs被用过之后就不能再用了,好像workbook在用它初始化之后就把它释放了。

    --保存时,也需要借助一个FileStream对象将workbook中的内容写入具体的文件。而workbook并没有Save之类的功能,没找到

      MemoryStream stream = new MemoryStream();

      wbres.Write(stream);

      var buf = stream.ToArray();

      FileStream resfile = new FileStream(NEW_FILE_NAME, FileMode.Create, FileAccess.Write);

      resfile.Write(buf, 0, buf.Length);

      resfile.Flush();

    但我看有的教程中写得比较简洁,无需借助MemoryStream:

      file = new FileStream(filepath, FileMode.Open, FileAccess.Write);

      wb.Write(file);

      file.Close();

      wb.Close()

    我用这个写法做,生成的文件总是打不开,显示是文件损坏。

    后来发现:凡是直接NOIP生成的文件,可以用两种方法操作,都没有问题

    但是用我电脑上的EXCEL程序编辑过的文件,不管用哪种方法修改,EXCEL程序打开文件时就会出错。

    不知道怎么回事。

    --sheet.CreateRow之后并不会创建Row中的Cell,Cell还是需要一个个创建才能用

    -- irow.GetCell与irow.Cells基本一样,但是当col超出引用范围时,Cells索引器会异常,而GetCell返回null

      IRow irow=sheet.GetRow(osm.xlRow);

      ICell srccell=irow.GetCell(col);

      ICell srccell=irow.Cells[col];

    -- 因为全部是在内存中操作,速度还是很快的。

      

  • 相关阅读:
    IOS 使用动态库(dylib)和动态加载framework
    iOS 开发者应该知道的 ARM 结构
    解惑好文:移动端H5页面高清多屏适配方案
    js 单例模式的实现方式----闭包和构造函数内部判断
    解决express video 手机无法播放的问题
    前后端通吃的单元测试---mocha
    swift-ios开发pod的使用(1)
    UI 自动化测试工具BackstopJS简介(1)
    阿里妈妈-RAP项目的实践(3)
    阿里妈妈-RAP项目的实践(2)
  • 原文地址:https://www.cnblogs.com/sinceret/p/10653625.html
Copyright © 2011-2022 走看看