2.3.5 用NPOI操作EXCEL--If函数

      在Excel中,IF(logical_test,value_if_true,value_if_false)用来用作逻辑判断。其中Logical_test表示计算结果为 TRUE 或 FALSE 的任意值或表达式 ; value_if_true表示当表达式Logical_test的值为TRUE时的返回值;value_if_false表示当表达式Logical_test的值为FALSE时的返回值。同样在NPOI中也可以利用这个表达式进行各种逻辑运算。如下代码分别设置了B2和D2单元格的用于逻辑判断的公式。

HSSFSheet sheet1  =  hssfworkbook.CreateSheet( " Sheet1 " );

HSSFRow row1 
=  sheet1.CreateRow( 0 );
row1.CreateCell(
0 ).SetCellValue( " 姓名 " );
row1.CreateCell(
1 ).SetCellValue( " 身份证号 " );
row1.CreateCell(
2 ).SetCellValue( " 性别 " );
row1.CreateCell(
3 ).SetCellValue( " 语文 " );
row1.CreateCell(
4 ).SetCellValue( " 是否合格 " );

HSSFRow row2 
=  sheet1.CreateRow( 1 );
row2.CreateCell(
0 ).SetCellValue( " 令狐冲 " );
row2.CreateCell(
1 ).SetCellValue( " 420821198808101014 " );
row2.CreateCell(
2 ).SetCellFormula( " IF(MOD(MID(B2,18,1),2)=0,\ " 男\ " ,\ " 女\ " ) " );
row2.CreateCell(
3 ).SetCellValue( 85 );
row2.CreateCell(
4 ).SetCellFormula( " IF(D2>60,IF(D2>90,\ " 优秀\ " ,\ " 合格\ " ),\ " 不合格\ " ) " );

其中最关键的两句执行结果如下:

row2.CreateCell( 2 ).SetCellFormula( " IF(MOD(MID(B2,18,1),2)=0,\ " 男\ " ,\ " 女\ " ) " );


row2.CreateCell( 4 ).SetCellFormula( " IF(D2>60,IF(D2>90,\ " 优秀\ " ,\ " 合格\ " ),\ " 不合格\ " ) " );

 

下面分别对这几个函数作一些说明:
      MOD(MID(B2,18,1),2):我们知道18位身份证号的第18位表示性别,偶数为男性,奇数为女性,所以用了MID(B2,18,1)取第18位数字(与C#中一般从0计数不同,第二个参数是从1算起,有关MID函数的更多信息,请参见字符串函数),用MOD取余函数判断奇偶。在Excel中对数据类型的控制没有C#中那么严格,如此例中我截取出来的是字符串,但当我做取余运算时Excel会自动转换。
      IF(D2>60,IF(D2>90,"优秀","合格"),"不合格"):这是IF的嵌套使用,表示90分以上为优秀,60分以上为合格,否则为不合格。

 

 

返回目录

 

你可能感兴趣的:(Excel)