zoukankan      html  css  js  c++  java
  • c# NPOI 小笔

      本周开始用c#做一个小项目,因此学习了c#。本人关注如何导入导出excel的,通过师兄的推荐,也去网上查找了相关资料,果断采取NPOI类库。

      具体说明NPOI如何如何强大,基本功能如何实现,这里不再累述,请浏览官网教程:http://tonyqus.sinaapp.com/tutorial

      这里只记录我使用NPOI的一些心得。

      1、在导入excel时取得指定工作簿的最大行数和最大列数。

      NOPI的工作簿使用HSSFSheet,可以用getRow取得某行,通常用excel首行的最大列数来计算当前工作簿的最大列数,即sheet.getRow(0).LastCellNum可以取到最大列数,其实这个属性是取得首行最后一列的小标,不过恰好可以来指定首行的列数。这个属性只计算到有内容的最后一列。如下图示例:

      

    sheet.getRow(0).LastCellNum=7。

      取得最大列数通常使用HSSFSheet.LastRowNum。不过这里的实现和上面不同,这个属性取得的值是当前工作簿下拉显示的最大行数,即使没有显示。如果将excel导入一个流再马上使用这个流导入,导出的每个Cell(单元格)对导入的值或者样式(StringCellValue等等)通过使用setCellValue或者其他设定样式的方法来赋值或设定样式,会在某行报错。究竟是神马错误,笔者未深究。。。笔者在处理这样的问题,也是假定了一个规则,即excel首列不能为空,如果为空则认为后面没有接下去的行。当然也可以考虑入LastCellNum的实现方式,取得最后不为空的列的列标。不过在笔者简单的应用,不需要考虑。因此只需进行下列的判断即可:

    ICell cellIf = row.GetCell(0);
    if (cellIf == null || cellIf.CellType == CellType.BLANK) 

      2、关于excel导入导出颜色的相关问题。

      NPOI关于导入导出颜色相关属性有三个,分别为FillBackgroundColor,FillForegroundColor,FillPattern。本人做了多次实验,始终无法了解FillBackgroundColor是个啥东东,从excel导入取得这个值总是默认的64,很郁闷~。FIllPattern是个枚举型,用来指定excel的背景图案。FillForegroundColor就是背景图案的颜色。如果不指定FIllPattern或者指定NO_FILL时,FillForegroundColor不会生效。必须得指定FIllPattern。。。经过导入实验取得跟导入一样效果的FillPatter的值为SOLID_FOREGROUND(即看不出背景有神马图案,又能把颜色给添上去的模样),这个在那个官方教程没有特别指出,吭爹呀~然后,还得说明的是,导入的时候如果木有颜色会指定FillForegroundColor默认我64,导出的时候不能这样做,因为64对应的是惨兮兮的黑色~~FillForegroundColor是个short型属性,可以设定除负数外的任何值。。。当然用NPOI类库提供的HSSFColor的一些颜色设定值来赋值更为可靠。

      ok~本人本周关于NPOI的学习小结就到此,以后有深入研究或者新发现再添加。。。(估计是不可能了,已经能用最基本的功能实现需求,就无所他求了。。。)

      

  • 相关阅读:
    php7安装Memcached扩展
    php7安装
    结束进程
    openssl 编译
    boost 编译
    php 与 c++ openssl 加密通信
    iptables 端口转发
    获取进程及父进程的两种方式
    windows 下获取父进程pid
    CentOS 64位系统 yum安装32位软件包的方法
  • 原文地址:https://www.cnblogs.com/lake19901126/p/2602337.html
Copyright © 2011-2022 走看看