2.3.4 用NPOI操作EXCEL--字符串函数
这一节我们开始学习Excel另一类非常常见的函数—字符串函数。 在Excel中提供了非常丰富的字符串函数,在NPOI中同样得到了很好的支持。
一、 大小写转换类函数
LOWER(String):将一个文字串中的所有大写字母转换为小写字母。
UPPER(String):将文本转换成大写形式。
PROPER(String):将文字串的首字母及任何非字母字符之后的首字母转换成大写。将其余的字母转换成小写。
对应的C#代码与前几节讲的设置公式的代码类似:
row1.CreateCell(0).SetCellValue("待操作字符串");
row1.CreateCell(1).SetCellValue("操作函数");
row1.CreateCell(2).SetCellValue("操作结果");
HSSFRow row2 = sheet1.CreateRow(1);
row2.CreateCell(0).SetCellValue("This is a NPOI example!");
row2.CreateCell(1).SetCellValue("LOWER(A2)");
//将此句中的“LOWER(A2)”换成UPPER (A2)、PROPER (A2)可以看到不同效果。
row2.CreateCell(2).SetCellFormula("LOWER(A2)");
二、 取出字符串中的部分字符
LEFT(text,num_chars):LEFT(text,num_chars)其中Text是包含要提取字符的文本串。Num_chars指定要由 LEFT 所提取的字符数。
MID(text,start_num,num_chars):MID(text,start_num,num_chars)其中Text是包含要提取字符的文本串。Start_num是文本中要提取的第一个字符的位置,num_chars表示要提取的字符的数。
RIGHT(text,num_chars):RIGHT(text,num_chars)其中Text是包含要提取字符的文本串。Num_chars指定希望 RIGHT 提取的字符数。
代码与上面类似,就不写了。
三、 去除字符串的空白
TRIM(text):其中Text为需要清除其中空格的文本。需要注意的是,与C#中的Trim不同,Excel中的Trim函数不仅会删除字符串头尾的字符,字符串中的多余字符也会删除,单词之间只会保留一个空格。
四、 字符串的比较
EXACT(text1,text2):比较两个字符串是否相等,区分大小写。
执行效果如下:
在此只简单的讲了一下常用的函数,Excel中还有很多的字符串函数,在此附上,读者可以一个一个去测试。
函数名 | 函数说明 | 语法 |
---|---|---|
ASC | 将字符串中的全角(双字节)英文字母更改为半角(单字节)字符。 | ASC(text) |
CHAR | 返回对应于数字代码的字符,函数 CHAR 可将其他类型计算机文件中的代码转换为字符。 | CHAR(number) |
CLEAN | 删除文本中不能打印的字符。对从其他应用程序中输入的字符串使用 CLEAN 函数,将删除其中含有的当前操作系统无法打印的字符。例如,可以删除通常出现在数据文件头部或尾部、无法打印的低级计算机代码。 | CLEAN(text) |
CODE | 返回文字串中第一个字符的数字代码。返回的代码对应于计算机当前使用的字符集。 | CODE(text) |
CONCATENATE | 将若干文字串合并到一个文字串中。 | CONCATENATE (text1,text2,...) |
DOLLAR | 依照货币格式将小数四舍五入到指定的位数并转换成文字。 | DOLLAR 或 RMB(number,decimals) |
EXACT | 该函数测试两个字符串是否完全相同。如果它们完全相同,则返回 TRUE;否则,返回 FALSE。函数 EXACT 能区分大小写,但忽略格式上的差异。利用函数 EXACT 可以测试输入文档内的文字。 | EXACT(text1,text2) |
FIND | FIND 用于查找其他文本串 (within_text) 内的文本串 (find_text),并从 within_text 的首字符开始返回 find_text 的起始位置编号。 | FIND(find_text,within_text,start_num) |
FIXED | 按指定的小数位数进行四舍五入,利用句点和逗号,以小数格式对该数设置格式,并以文字串形式返回结果。 | FIXED(number,decimals,no_commas) |
JIS | 将字符串中的半角(单字节)英文字母或片假名更改为全角(双字节)字符。 | JIS(text) |
LEFT | LEFT 基于所指定的字符数返回文本串中的第一个或前几个字符。 LEFTB 基于所指定的字节数返回文本串中的第一个或前几个字符。此函数用于双字节字符。 |
LEFT(text,num_chars) LEFTB(text,num_bytes) |
LEN | LEN 返回文本串中的字符数。 LENB 返回文本串中用于代表字符的字节数。此函数用于双字节字符。 |
LEN(text) LENB(text) |
LOWER | 将一个文字串中的所有大写字母转换为小写字母。 | LOWER(text) |
MID | MID 返回文本串中从指定位置开始的特定数目的字符,该数目由用户指定。 MIDB 返回文本串中从指定位置开始的特定数目的字符,该数目由用户指定。此函数用于双字节字符。 |
MID(text,start_num,num_chars) MIDB(text,start_num,num_bytes) |
PHONETIC | 提取文本串中的拼音 (furigana) 字符。 | PHONETIC(reference) |
PROPER | 将文字串的首字母及任何非字母字符之后的首字母转换成大写。将其余的字母转换成小写。 | PROPER(text) |
REPLACE | REPLACE 使用其他文本串并根据所指定的字符数替换某文本串中的部分文本。 REPLACEB 使用其他文本串并根据所指定的字符数替换某文本串中的部分文本。此函数专为双字节字符使用。 |
REPLACE(old_text,start_num,num_chars,new_text) REPLACEB(old_text,start_num,num_bytes,new_text) |
REPT | 按照给定的次数重复显示文本。可以通过函数 REPT 来不断地重复显示某一文字串,对单元格进行填充。 | REPT(text,number_times) |
RIGHT | RIGHT 根据所指定的字符数返回文本串中最后一个或多个字符。 RIGHTB 根据所指定的字符数返回文本串中最后一个或多个字符。此函数用于双字节字符。 |
RIGHT(text,num_chars) RIGHTB(text,num_bytes) |
SEARCH | SEARCH 返回从 start_num 开始首次找到特定字符或文本串的位置上特定字符的编号。使用 SEARCH 可确定字符或文本串在其他文本串中的位置,这样就可使用 MID 或 REPLACE 函数更改文本。 SEARCHB 也可在其他文本串 (within_text) 中查找文本串 (find_text),并返回 find_text 的起始位置编号。此结果是基于每个字符所使用的字节数,并从 start_num 开始的。此函数用于双字节字符。此外,也可使用 FINDB 在其他文本串中查找文本串。 |
SEARCH(find_text,within_text,start_num) SEARCHB(find_text,within_text,start_num) |
SUBSTITUTE | 在文字串中用 new_text 替代 old_text。如果需要在某一文字串中替换指定的文本,请使用函数 SUBSTITUTE;如果需要在某一文字串中替换指定位置处的任意文本,请使用函数 REPLACE。 | SUBSTITUTE(text,old_text,new_text,instance_num) |
T | 将数值转换成文本。 | T(value) |
TEXT | 将一数值转换为按指定数字格式表示的文本。 | TEXT(value,format_text) |
TRIM | 除了单词之间的单个空格外,清除文本中所有的空格。在从其他应用程序中获取带有不规则空格的文本时,可以使用函数 TRIM。 | TRIM(text) |
UPPER | 将文本转换成大写形式。 | UPPER(text) |
VALUE | 将代表数字的文字串转换成数字。 | VALUE(text) |
WIDECHAR | 将单字节字符转换为双字节字符。 | WIDECHAR(text) |
YEN | 使用 ¥(日圆)货币格式将数字转换成文本,并对指定位置后的数字四舍五入。 | YEN(number,decimals) |