隨筆 - 225  文章 - 98  trackbacks - 0
          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          隨筆分類

          相冊(cè)

          報(bào)表工具廠商們

          搜索

          •  

          最新評(píng)論

          閱讀排行榜


          使用FineReport經(jīng)常會(huì)遇到在設(shè)計(jì)中要取兩個(gè)字符之間的數(shù)據(jù)或者文本的問(wèn)題。在此貢獻(xiàn)一些公式給大家。

          寫過(guò)代碼的都知道想到的是用substr或者split函數(shù)來(lái)做,但是仔細(xì)研究一下就會(huì)發(fā)現(xiàn)substr只能解決取從第幾個(gè)字符開始的n個(gè)字符,而split是返回的用分隔符分割的字符串,沒(méi)有選擇性的截取,后來(lái)找了一下,發(fā)現(xiàn)原來(lái)有這種算法,例子中說(shuō)的是在excel中的方法,fr兼容excel所以這一點(diǎn)不用擔(dān)心。

          有時(shí)需要從包含分隔符號(hào)的字符串中提取子字符串,例如Excel工作表的某列中包含類似“200-GH11301-11TB5”的文本字符串,該字符串被兩個(gè)相同的分隔符號(hào)“-”分成三部分,且每部分的字符數(shù)不固定,現(xiàn)在需要提取其中的第2部分內(nèi)容“GH11301"。這時(shí)可以使用下面的公式,假如原字符串位于A1單元格中,在B1單元格中輸入如下公式:

          =MID(LEFT(A1,FIND("`",SUBSTITUTE(A1,"-","`",2))-1),FIND("`",SUBSTITUTE(A1,"-","`",1))+1,LEN(A1))

          公式說(shuō)明:本例用SUBSTITUTE函數(shù)將兩個(gè)分隔符號(hào)“-”替換為“`”,“`”符號(hào)位于數(shù)字“1”鍵的左側(cè),也可改為字符串中沒(méi)有出現(xiàn)的其他特殊符號(hào)。然后用FIND函數(shù)查找第二個(gè)“`”出現(xiàn)的位置并用LEFT函數(shù)去掉第二個(gè)“`”后面的部分,最后用MID函數(shù)提取所需內(nèi)容。由于MID函數(shù)的第三個(gè)參數(shù)“LEN(A1)”大于所提取文本的字符數(shù),因而本公式適用于各部分長(zhǎng)度不固定的字符串。

                也可使用下面的公式:

          =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),LEN(A1),LEN(A1)))

          公式說(shuō)明:REPT(" ",LEN(A1))產(chǎn)生一個(gè)與原字符串長(zhǎng)度相同的空格字符串,用SUBSTITUTE函數(shù)將其替換各分隔符號(hào),這樣所需提取文本的前后就都包含了與原字符串長(zhǎng)度相同的空格字符串,再用MID函數(shù)進(jìn)行截取,截取后的字符串前后都包含一些空格,最后用TRIM函數(shù)去掉這些空格即得到所需文本。

          本例原字符串中有2個(gè)分隔符號(hào),第一部分有3個(gè)字符,第二部分有7個(gè)字符,第三部分有5個(gè)字符,字符串總長(zhǎng)度LEN(A1)=17,MID函數(shù)截取后“GH11301”的前面就有4(3+17-17+1)個(gè)空格,后面就有6(17-4-7)個(gè)空格。
              
              如果字符串中包含更多的分隔符號(hào),如“1130-80-F030305-5TB1-T(40)”,要提取各部分內(nèi)容,可以將公式改為:

          提取第一部分:

          =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),1,LEN(A1)))

          或者直接用公式:

          =LEFT(A1,FIND("-",A1)-1)

          提取其他部分,如第3部分“F030305”:

          =TRIM(MID(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),2*LEN(A1),LEN(A1)))

          本例中提取字符串中的第3部分,公式中用紅色標(biāo)識(shí)的數(shù)字為“2”,如果是第N部分,則為N-1。



          了解Java報(bào)表工具就從這里開始
          posted on 2012-09-06 23:46 season 閱讀(949) 評(píng)論(0)  編輯  收藏 所屬分類: Java報(bào)表—技術(shù)知識(shí)
          主站蜘蛛池模板: 余干县| 贵定县| 永康市| 普格县| 黄骅市| 黎城县| 临洮县| 衡水市| 梁平县| 祁连县| 双峰县| 定远县| 交口县| 长汀县| 郁南县| 平南县| 汨罗市| 友谊县| 庄河市| 霍林郭勒市| 垣曲县| 定结县| 双峰县| 墨江| 浪卡子县| 福泉市| 文安县| 水城县| 密山市| 南雄市| 通辽市| 民县| 凉山| 长岛县| 龙里县| 策勒县| 伊宁市| 东城区| 鄂伦春自治旗| 历史| 都安|