标题 | java报表工具FineReport常用函数的用法总结(文本和日期函数) |
范文 | FineReport是比较常用的java报表开发工具,本文总结了常用函数中的文本和日期函数 文本函数 CHAR CHAR(number):根据指定数字返回对应的字符。CHAR函数可将计算机其他类型的数字代码转换为字符。 Number:用于指定字符的数字,介于1Number:用于指定字符的数字,介于165535之间(包括1和65535)。 示例: CHAR(88)等于“X”。 CHAR(45)等于“-”。 CODE CODE(text):计算文本串中第一个字符的数字代码。返回的代码对应于计算机使用的字符集。 Text:需要计算第一个字符代码的文本或单元格引用。 示例: CODE("S")等于83。 CODE("Spreadsheet")等于83。 CONCATENATE CONCATENATE(text1,text2,...):将数个字符串合并成一个字符串。 Text1,text2,...:需要合并成单个文本的文本项,可以是字符,数字或是单元格引用。 备注: 也可以用“&”来代替CONCATENATE函数对文本项进行合并。 示例: CONCATENATE("Average ","Price")等于“Average Price”,这相当于“Average”&“ ”&“Price”。 CONCATENATE("1","2")等于12。 ENDWITH ENDWITH(str1,str2):判断字符串str1是否以str2结束。 备注: str1和str2都是大小写敏感的。 示例: ENDWITH("FineReport","Report")等于true ENNUMBER。ENDWITH("FineReport","Fine")等于false。 ENDWITH("FineReport","report"ENNUMBER ENNUMBER(value):将给定的BigDecimal类型的数字转化成英文金额的字符串。 ENMONEY ENMONEY(value):将给定的BigDemical类型的数字转换成英文金额字符串。 示例: ENMONEY(23.49)等于TWENTY。 ENNUMER ENNUMBER(value):将给定的BigDecimal类型的数字转化成英文金额的字符串。 EXACT EXACT(text1,text2):检测两组文本是否相同。如果完全相同,EXACT函数返回TRUE;否则,返回FALSE。EXACT函数可以区分大小写,但忽略格式的不同。同时也可以利用EXACT函数来检测输入文档的文字。 Text1:需要比较的第一组文本。 Text2:需要比较的第二组文本。 示例: EXACT("Spreadsheet","Spreadsheet")等于TRUE。 EXACT("Spreadsheet","S preadsheet")等于FALSE。 EXACT("Spreadsheet","spreadsheet")等于FALSE。 FIND FIND(find_text,within_text,start_num):在文本串中查找另一文本串,并且从within_text中的第一个字符开始返回到find_text的起始位置编号。也可以使用SEAERCH函数在文本串中查找另一文本串,所不同的是FIND函数能区分大小写,但不允许使用通配符。 Find_text:需要查找的文本或包含文本的单元格引用。 Within_text:包含需要查找文本的文本或单元格引用。 Start_num:指定进行查找字符的起始位置。在within_text中起始位置字符编号为1。如果省略start_num,则假设值为1。 备注: 如果find_text不在within_text中,FIND函数返回错误信息*VALUE!。 如果start_num不大于0,FIND函数返回错误信息*VALUE!。 如果start_num大于within_text的长度,FIND函数返回错误信息*VALUE!。 如果find_text是空白文本,FIND函数将在搜索串中匹配第一个字符(即编号为start_num或1的字符)。 示例: FIND("I","Information")等于1。 FIND("i","Information")等于9。 FIND("o","Information",2)等于4。 FIND("o","Information",12)等于*VALUE!。 INDEXOF INDEXOF(str1,index):返回字符串str1在index位置上的字符。 备注: index是从0开始计数的。 示例: INDEXOF("FineReport",0)等于'F'。 INDEXOF("FineReport",2)等于'n'。 INDEXOF("FineReport",9)等于't'。 LEFT LEFT(text,num_chars):根据指定的字符数返回文本串中的第一个或前几个字符。 Text:包含需要选取字符的文本串或单元格引用。 Num_chars:指定返回的字符串长度。 备注: Num_chars的值必须等于或大于0。 如果num_chars大于整个文本的长度,LEFT函数将返回所有的文本。 如果省略num_chars,则默认值为1。 示例: LEFT("Fine software",8)等于“Fine sof”。 LEFT("Fine software")等于“F”。 如果单元格A3中含有“China”,则LEFT(A3,2)等于“Ch”。 LEN LEN(text):返回文本串中的字符数。 Text:需要求其长度的文本,空格也计为字符。 示例: LEN("Evermore software")等于17。 LEN(" ")等于1。 LOWER LOWER(text):将所有的大写字母转化为小写字母。 Text:需要转化为小写字母的文本串。LOWER函数不转化文本串中非字母的字符。 示例: LOWER("A.M.10:30")等于“a.m.10:30”。 LOWER("China")等于“china”。 MID MID(text,start_num,num_chars):返回文本串中从指定位置开始的一定数目的字符,该数目由用户指定。 Text:包含要提取字符的文本串。 Start_num:文本中需要提取字符的起始位置。文本中第一个字符的start_num为1,依此类推。 Num_chars:返回字符的长度。 备注: 如果start_num大于文本长度,MID函数返回“”(空文本)。 如果start_num小于文本长度,并且start_num加上num_chars大于文本长度,MID函数将从start_num指定的起始字符直至文本末的所有字符。 如果start_num小于1,MID函数返回错误信息*VALUE!。 如果num_chars是负数,MID函数返回错误信息*VALUE!。 示例: MID("Finemore software",10,8)返回“software”。 MID("Finemore software",30,5)返回“”(空文本)。 MID("Finemore software",0,8)返回*VALUE!。 MID("Finemore software",5,-1)返回*VALUE!。 NUMTO NUMTO(number):返回number的中文表示。 示例:NUMTO(2345)等于二三四五。 PROPER PROPER(text):将文本中的第一个字母和所有非字母字符后的第一个字母转化成大写,其他字母变为小写。 Text:需要转化为文本的公式、由双引号引用的文本串或是单元格引用。 示例: PROPER("Finemore Integrated Office")等于“Finemore Integrated Office”。 PROPER("100 percent")等于“100 Percent”。 PROPER("SpreaDSheEt")等于“Spreadsheet”。 REGEXP REGEXP(str, pattern):字符串str是否与正则表达式pattern相匹配。 示例: REGEXP("aaaaac","a*c")等于true。 REGEXP("abc","a*c")等于false。 REGEXP(str, pattern, intNumber):字符串str是否与具有给定模式 intNumber的正则表达式pattern相匹配。 备注: CASE_INSENSITIVE = 0启用不区分大小写的匹配。 标志连同此标志来启用 Unicode感知的、不区分大小写的匹配。 默认情况下,不区分大小写的匹配假定仅匹配 US-ASCII字符集中的字符。可以通过指定 UNICODE_CASE MULTILINE = 1启用多行模式。 DOTALL = 2启用 dotall模式。 在 dotall模式中,表达式 可以匹配任何字符,包括行结束符。默认情况下,此表达式不匹配行结束符。 UNICODE_CASE = 3启用 Unicode感知的大小写折叠 指定此标志后,由CASE_INSENSITIVE标志启用时,不区分大小写的匹配将以符合 Unicode Standard的方式完成。 CANON_EQ = 4启用规范等价。 指定此标志后,当且仅当其完整规范分解匹配时,两个字符才可视为匹配。 UNIX_LINES = 5启用 Unix行模式。 在此模式中,.、^和 $的行为中仅识别 ' '行结束符。 LITERAL = 6启用模式的字面值解析。 指定此标志后,指定模式的输入字符串就会作为字面值字符序列来对待。输入序列中的元字符或转义序列不具有任何特殊意, 标志 CASE_INSENSITIVE和 UNICODE_CASE在与此标志一起使用时将对匹配产生影,其他标志都变得多余了。 COMMENTS = 7模式中允许空白和注释。 此模式将忽略空白和在结束行之前以 #开头的嵌入式注释。 示例: REGEXP("Aaaaabbbbc","a*b*c", 3)等于true REGEXP("Aaaaabbbbc","a*b*c", 1)等于false。 REPLACE REPLACE(old_text,start_num,num_chars,new_text):根据指定的字符数,用其他文本串来替换某个文本串中的部分内容。 Old_text:需要被替换部分字符的文本或单元格引用。 Start_num:需要用new_text来替换old_text中字符的起始位置。 Num_chars:需要用new_text来替换old_text中字符的个数。 New_text:需要替换部分旧文本的文本。 示例: REPLACE("0123456789",5,4,"*")等于“0123*89”。 REPLACE("1980",3,2,"99")等于“1999”。 REPT REPT(text,number_times):根据指定的次数重复显示文本。REPT函数可用来显示同一字符串,并对单元格进行填充。如果number_times为0,REPT函数将返回“”(空文本)。如果number_times不是整数,将被取整。REPT函数的最终结果通常不大于32767个字符。 Text:需要重复显示的文本或包含文本的单元格引用。 Number_times:指定文本重复的次数,且为正数。 备注: 该函数可被用于在工作表中创建简单的直方图。 示例: REPT("$",4)等于“$$$$”。 如果单元格B10的内容为“你好”,REPT(B10,3.6)等于“你好你好你好”。 RIGHT RIGHT(text,num_chars):根据指定的字符数从右开始返回文本串中的最后一个或几个字符。 Text:包含需要提取字符的文本串或单元格引用。 Num_chars:指定RIGHT函数从文本串中提取的字符数。Num_chars不能小于0。 如果num_chars大于文本串长度,RIGHT函数将返回整个文本。如果不指定num_chars,则默认值为1。 示例: RIGHT("It is interesting",6)等于“esting”。 RIGHT("Share Holder")等于“r”。 RIGHT("Huge sale",4)等于“sale”。 SPLIT SPLIT(String1,String2):返回由String2分割String1组成的字符串数组。 String1:以双引号表示的字符串。 String2:以双引号表示的分隔符。例如逗号"," 备注: 如果只有一个参数,则返回一个错误。 如果有多个参数,则只有前两个起作用。 示例: SPLIT("hello,world,yes",",") = ["hello","world","yes"]。 SPLIT("this is very good"," ") = ["this","is","very","good"]。 STARTWITH STARTWITH(str1,str2):判断字符串str1是否以str2开始。 备注: str1和str2都是大小写敏感的。 示例: STARTWITH("FineReport","Fine")等于true。 STARTWITH("FineReport","Report")等于false。 STARTWITH("FineReport","Fine")等于false。 SUBSTITUTE SUBSTITUTE(text,old_text,new_text,instance_num):用new_text替换文本串中的old_text。 Text:需要被替换字符的文本,或含有文本的单元格引用。 Old_text:需要被替换的部分文本。 New_text:用于替换old_text的文本。 Instance_num:指定用new_text来替换第几次出现的old_text。如果指定了instance_num,则只有指定位置上的old_text被替换,否则文字串中出现的所有old_text都被new_text替换。 备注: 如果需要替换文本串中的指定文本,则使用SUBSTITUTE函数;如果需要替换文本串中指定位置上的任意文本,则使用REPLACE函数。 示例: SUBSTITUTE("data base","base","model")等于“data model”。 SUBSTITUTE("July 28, 2000","2","1",1)等于“July 18, 2000”。 SUBSTITUTE("July 28, 2000","2","1")等于“July 18, 1000”。 SUBSTITUTE("July 28, 2000","2","1",2)等于“July 28, 1000”。 TODOUBLE TODOUBLE(text):将文本转换成Double对象。 Text:需要转换的文本。 示例: TODOUBLE("123.21")等于 new Double(123.21)。 TOINTEGER TOINTEGER(text):将文本转换成Integer对象。 Text:需要转换的文本。 示例: TOINTEGER("123")等于 new Integer(123)。 TRIM TRIM(text):清除文本中所有空格,单词间的单个空格除外,也可用于带有不规则空格的文本。 Text:需要清除空格的文本。 示例: TRIM(" Monthly Report")等于Monthly Report。 TOIMAGE TOIMAGE(path):返回path路径下的image。 UPPER UPPER(text):将文本中所有的字符转化为大写。 Text:需要转化为大写字符的文本,或是包含文本的单元格引用。 示例: UPPER("notes")等于“NOTES”。 如果单元格E5的值为“Examples”,则UPPER(E5)等于“EXAMPLES”。 日期和时间函数 凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd。而且必须用英文环境下双引号(" ")引用。 DATE DATE(year,month,day):返回一个表示某一特定日期的系列数。 Year:代表年,可为一到四位数。 Month:代表月份。 若1<=month<= 12,则函数把参数值作为月。 若month>12,则函数从年的一月份开始往上累加。例如: DATE(2000,25,2)等于2002年1月2日的系列数。 Day:代表日。 若日期小于等于某指定月的天数,则函数将此参数值作为日。 若日期大于某指定月的天数,则函数从指定月份的第一天开始往上累加。若日期大于两个或多个月的总天数,则函数把减去两个月或多个月的余数加到第三或第四个月上,依此类推。例如:DATE(2000,3,35)等于2000年4月4日的系列数。 备注: 若需要处理公式中日期的一部分,如年或月等,则可用此公式。 若年,月和日是函数而不是函数中的常量,则此公式最能体现其作用。 示例: DATE(1978, 9, 19)等于1978年9月19日. DATE(1211, 12, 1)等于1211年12月1日. DATEDELTA DATEDELTA(date, deltadays):返回一个日期——date后deltadays的日期。 deltaDays可以为正值,负值,零。 示例: DATEDELTA("2008-08-08", -10)等于2008-07-29。 DATEDELTA("2008-08-08", 10)等于2008-08-18。 DATEDIF DATEDIF(start_date,end_date,unit):返回两个指定日期间的天数、月数或年数。 Start_date:代表所指定时间段的初始日期。 End_date:代表所指定时间段的终止日期。 Unit:函数返回信息的类型。 若unit=“Y”,则DATEDIF返回指定时间段的年差数。 若unit=“M”,则DATEDIF返回指定时间段的月差数。 若unit=“D”,则DATEDIF返回指定时间段的日差数。 若unit=“MD”,则DATEDIF忽略年和月,返回指定时间段的日差数。 若unit=“YM”,则DATEDIF忽略年和日,返回指定时间段的月差数。 若unit=“YD”,则DATEDIF忽略年,返回指定时间段的日差数。 示例: DATEDIF("2001/2/28","2004/3/20","Y")等于3,即在2001年2月28日与2004年3月20日之间有3个整年。 DATEDIF("2001/2/28","2004/3/20","M")等于36,即在2001年2月28日与2004年3月20日之间有36个整月。 DATEDIF("2001/2/28","2004/3/20","D")等于1116,即在2001年2月28日与2004年3月20日之间有1116个整天。 DATEDIF("2001/2/28","2004/3/20","MD")等于8,即忽略月和年后,2001年2月28日与2004年3月20日的差为8天。 DATEDIF("2001/1/28","2004/3/20","YM")等于2,即忽略日和年后,2001年1月28日与2004年3月20日的差为2个月。 DATEDIF("2001/2/28","2004/3/20","YD")等于21,即忽略年后,2001年2月28日与2004年3月20日的差为21天。 DATEINMONTH DATEINMONTH(date, number):函数返回在某一个月当中第几天的日期。 示例: DATEINMONTH("2008-08-08", 20)等于2008-08-20。 DATEINQUARTER DATEINQUARTER(date, number):函数返回在某一个季度当中第几天的日期。 示例: DATEINQUARTER("2009-05-05", 20)等于2009-04-20。 DATEINWEEK DATEINWEEK(date, number):函数返回在某一个星期当中第几天的日期。 示例: dateInWeek("2008-08-28", 2)等于2008-08-26。 DATEINYEAR DATEINYEAR(date, number):函数返回在某一年当中第几天的日期。 示例: dateInYEAR("2008/12/03", 300)等于2008-10-26。 DATESUBDATE DATESUBDATE(date1, date2, op):返回两个日期之间的时间差。 op表示返回的时间单位: "s",以秒为单位。 "m",以分钟为单位。 "h",以小时为单位。 "d",以天为单位。 "w",以周为单位。 示例: DATESUBDATE("2008-08-08", "2008-06-06","h")等于1512。 DATETONUMBER DATETONUMBER(date):返回自 1970 年 1月 1日 00:00:00 GMT经过的毫秒数。 示例: DATETONUMBER("2008-08-08")等于1218124800000。 DAY DAY:(serial_number)返回日期中的日。DAY是介于1和31之间的一个数。 Serial_number:含有所求的年的日期. 备注: FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。 在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3, 将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。 示例: DAY("2000/1/1")等于1。 DAY("2006/05/05")等于5。 DAY("1997/04/20")等于20。 DAY(35796)等于1。 DAYS360 DAYS360(start_date,end_date,method):按照一年 360天的算法(每个月以 30天计,一年共计 12个月), 返回两日期间相差的天数,这在会计计算中将会用到。如果财务系统是基于一年 12个月,每月 30天, 可用此函数帮助计算支付款项。 Start_date和 end_date :是用于计算期间天数的起止日期。 Method :它指定了在计算中是采用欧洲方法还是美国方法。 Method定义 : FALSE或忽略 美国方法 (NASD)。如果起始日期是一个月的 31号,则等于同月的 30号。如果终止日期是一个月的 31号,并且起始日期早于 30号,则终止日期等于下一个月的 1号,否则,终止日期等于本月的 30号。 TRUE欧洲方法。无论是起始日期还是终止日期为一个月的 31号,都将等于本月的 30号。 备注: FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。 在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3, 将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。 示例: DAYS360("1998/1/30", "1998/2/1")等于 1. DAYSOFMONTH DAYSOFMONTH(date):返回从1900年1月后某年某月包含的天数。 示例: DAYSOFMONTH("1900-02-01")等于28。 DAYSOFMONTH("2008/04/04")等于30。 DAYSOFQUARTER DAYSOFQUARTER(date):返回从1900年1月后某年某季度的天数。 示例: DAYSOFQUARTER("2009-02-01")等于90。 DAYSOFQUARTER("2009/05/05")等于91。 DAYSOFYEAR DAYSOFYEAR(year):返回1900年以后某年包含的天数。 示例: DAYSOFYEAR(2008)等于365,等价于DAYSOFYEAR("2008-01-01")。 DATEVALUE DATEVALUE(date_text):返回代表date_text的一个系列数。此函数可用来把一个文本形式的日期转化为一个系列数。 Date_text:是在电子表格日期格式中代表日期的文本格式。例如“2000/2/28” 备注: FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。在1900年 日期系统中,永中Office电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3,将1900年1月3日保存 为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。 示例: DATEVALUE("2000/1/1")等于36526。 HOUR HOUR(serial_number):返回某一指定时间的小时数。函数指定HOUR为0(0:00)到23(23:00)之间的一个整数。 Serial_number:包含所求小时的时间。 示例: HOUR("11:32:40")等于11。 MINUTE MINUTE(serial_number):返回某一指定时间的分钟数,其值是介于0与59之间的一个整数。 Serial_number:包含所求分钟数的时间。 示例: MINUTE("15:36:25")等于36。 MONTH MONTH:(serial_number)返回日期中的月。月是介于1和12之间的一个数。 Serial_number:含有所求的月的日期. 备注: FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。 在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3, 将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。 示例: MONTH("2004/5/5")等于5。 MONTH(35796)等于1。 MONTHDELTA MONTHDELTA(date,delta):返回指定日期date后delta个月的日期。 示例: MONTHDELTA("2008-08-08", 4)等于2008-12-08。 NOW NOW():获取当前时间。 示例: 如果系统时间是15点18分38秒 则NOW()等于15:18:36。 SECOND SECOND(s erial_number):返回某一指定时间的秒数,其值是介于0与59之间的一个整数。 Serial_number:包含所求秒数的时间。 示例: SECOND("15:36:25")等于25。 SECOND("15:36:25", "HH:mm:ss")等于25。 TIME TIME(hour,minute,second):返回代表指定时间的小数。介于0:00:00(12:00:00 A.M.)与23:59:59(11:59:59 P.M.)之间的时间可返回0到0.99999999之间的对应数值。 Hour:介于0到23之间的数。 Minute:介于0到59之间的数。 Second:介于0到59之间的数。 示例: TIME(14,40,0)等于2:40 PM。 TIME(19,43,24)等于7:43 PM。 TODATE TODATE()函数可以将各种日期形式的参数转换为日期类型。 它有三种参数的形式: 1参数是一个日期型的参数,那么直接将这个参数返回。 示例: TODATE(DATE(2007,12,12))返回2007年12月12日组成的日期。 2参数是以从1970年1月1日0时0分0秒开始的毫秒数,返回对应的时间。 示例: TODATE(1023542354746)返回2002年6月8日。 3参数是日期格式的文本,那么返回这个文本对应的日期。 示例: TODATE("2007/10/15")返回2007年10月5日组成的日期。 TODATE("2007-6-8")返回2007年6月8日组成的日期。 4有两个参数,第一个参数是一个日期格式的文本,第二个参数是用来解析日期的格式。 示例: TODATE("1/15/07","MM/dd/yy")返回07年1月15日组成的日期. 注意:此处的格式中月份必须大写MM,年份小写:yy(不可以为yyyy)。天份小写:dd。 TODAY TODAY():获取当前日期。 示例: 如果系统日期是2005年9月10日 则TODAY()等于2005/9/10。 WEEKDAY WEEKDAY(Serial_number):获取日期并返回星期数。返回值为介于0到6之间的某一整数,分别代表星期中的某一天(从星期日到星期六)。 Serial_number:输入的日期 备注: FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。 在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3, 将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。 举例: WEEKDAY("2005/9/10")等于6(星期六)。 WEEKDAY("2005/9/11")等于0(星期日)。 WEEKDAY(35796)等于4(星期四)。 WEEKNUM WEEKNUM(serial_num):返回一个代表一年中的第几周的数字。 Serial_num:表示输入的日期。 备注: FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。 在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3, 将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。 示例: WEEKNUM("2005/1/1")等于1。 WEEKNUM("2005/1/6")等于2。 WEEKNUM(35796)等于1。 YEAR YEAR:(serial_number)返回日期中的年。Year是介于1900和9999之间的一个数。 Serial_number:含有所求的年的日期. 备注: FineReport将日期保存为系列数,一个系列数代表一个与之匹配的日期,以方便用户对日期进行数值式计算。 在1900年日期系统中,FineReport电子表格将1900年1月1日保存为系列数2,将1900年1月2日保存为系列数3, 将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统,1998年1月1日存为系列数35796。 示例: YEAR("2000/1/1")等于2000。 YEAR("2006/05/05")等于2006。 YEAR("1997/04/20")等于1997。 YEAR(35796)等于1998。 YEARDELTA YEARDELTA(date, delta):返回指定日期后delta年的日期。 示例: YEARDELTA("2008-10-10",10)等于2018-10-10。 |
随便看 |
|
在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。