這一節我們開始學習Excel另一類非常常見的函數—字串函數。 在Excel中提供了非常豐富的字串函數,在NPOI中同樣得到了很好的支援。
一、 大小寫轉換類函數
LOWER(String):將一個文字串中的所有大寫字母轉換為小寫字母。
UPPER(String):將文本轉換成大寫形式。
PROPER(String):將文字串的首字母及任何非字母字元之後的首字母轉換成大寫。將其餘的字母轉換成小寫。
對應的C#代碼與前幾節講的設定公式的代碼類似:
HSSFRow row1 = sheet1.CreateRow(0);
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) |
返回目錄