在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分以上为合格,否则为不合格。
返回目录