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分以上为合格,否则为不合格。

 

 

返回目录

 

posted @ 2009-09-15 00:01  atao.xiang  阅读(4462)  评论(4编辑  收藏  举报