pb实现打印中人民币大写
- 格式:docx
- 大小:16.07 KB
- 文档页数:1
PB中实现数据窗口打印预览通用方法我们在文字处理过程中,常常在打印前要预览,以便控制打印效果,特别在数据打印中要有选择地打印页面,更需要预览。
PB提供了程序开发过程中的数据打印预览,下面介绍在程序应用中实现打印预览通用方法。
主窗口示意图如下:打印预览窗口预览尺寸自定义30% 50% 100% 200% 标尺一、上述W_preview窗口中各控件说明:1. 命令按钮控件(CommandButton)Cb_1: 用于数据窗口翻至首页。
Cb_2: 用于数据窗口向上翻页。
Cb_3: 用于数据窗口向下翻页。
Cb_4: 用于数据窗口翻至尾页。
Cb_5: 用于关闭打印预览数据窗口。
2.复选框控件(CheckBox)Cbx_1:用于为预览数据窗口添加显示标尺。
3.掩码编辑器控件(EditMask)Em_1:用于显示和改变打印预览的相对比例。
4.成组框控件(GroupBox)Gb_1:用于显示一组控件的共同属性信息。
5.收音机按钮控件(RadioButton)Rb_1:用于用户自定义打印预览显示比例。
Rb_2:用于用户设置打印预览显示比例为30%。
Rb_3:用于用户设置打印预览显示比例为50%。
Rb_4:用于用户设置打印预览显示比例为100%。
Rb_5:用于用户设置打印预览显示比例为200%。
6.数据窗口控件(DataWindow)dw_1:用于显示打印预览结果。
二、下面讲述创建上述窗口的实现过程:1.创建一个新窗口W_preview,设置该窗口的类型(WindowType)为Response,设置窗口的标题(Title)为“打印预览窗口"。
2.在主窗口中按示意图放置各个控件,为掩码编辑器(Em_1)定义属性,在General页中定义Text为“100”,在Mask页中为Mask定义为“###”,选中Spin Control, 设置Spin Increment 为“1”,设置Spin Range的Min为“1”、Max为“200”。
1、单据打印时是否可以选择打印机和打印页数?【原因分析】可以选择,需要在显示打印设置中进行设置。
【解决方案】(1)打开一个单据,打开右下角打印——打印管理器,将显示打印设置打勾;如图2-1所示:图2-1【打印管理器】对话框(2)打印时会跳出一个提示界面,再次可以选择打印机、打印页数已经是打印页范围等。
如图2-2所示:图2-2【打印设置】对话框2、T1商贸宝中单据或者报表打印的时候能够设置每页打印固定的行数吗?【原因分析】可以通过打印报表设计来设置。
【解决方案】以销售单为例:打开打印报表设计,双击细项数据,在弹出的对话框中,“每页打印行数”默认为0(0代表没有行数限制,根据选择的纸张能打多少行就打多上行),把它改成需要的打印行数即可。
如果还需要在不足打印行数的时候增加空行,则可将“自动追加空行”选上。
如图2-3所示:图2-3【设置每页打印行数】对话框3、单据打印设计中如何设置金额大写?【解决方案】(1)选中单元格右键,在单元格类型中选择插入汇总框;选中单元格右键属性,弹出对象查看器,将“转换成大写”设置为True即可,如图2-4所示:图2-4【打印报表设计-转换成大写】对话框(2)也可以用函数转换成大写金额,双击要转换成大写金额的单元格,弹出文本编辑器,点Fx表达式,出现表达式编辑器,如图2-5-1所示:图2-5-1【打印报表设计-函数-转换成金额大写】对话框选择fx函数,在表达式编辑器中选择CurrToBigNum函数,如图2-5-2所示:图2-5-2【打印报表设计-函数——转换成金额大写】对话框选择继续,如图2-5-3所示:图2-5-3【打印报表设计-函数——转换成金额大写】对话框点,如图2-6-1所示:图2-6-1【打印报表设计-函数-表达式设置】对话框最终的设置公式:CurrToBigNum([细项数据."金额"]),如图2-6-2所示:图2-6-2【打印报表设计-函数-表达式确认】对话框选择对应的项,确认即可完成大写的转换。
象过河进销存仓库管理软件如何实现打印
金额大写?
象过河软件打印时,合计金额有时候需要打印大写的效果出来,具体需要如何设置这个功能呢?先看下图效果34-01
这个设置不复杂,【打印样式】- 【设计】,选择您要设计的样式,然后进入设计界面,选择要大写的那个字段,然后点击右键,选择【显示格式】,会跳出一个设置框,选择【数字】,然后在【格式字串】中输入小写的字母z ,如下图34-02( 然后点击确定,退出后点击保存,最后预览即可实现了)
关于象过河进销存财务管理软件的更多研究请进入象过河进销存软件网站: 象过河官方网站:。
Ireport实现金额大写●第一步:打开ireport,新建一个报表。
●第二步:在“Scriptlet”选项卡里选择“Use ireport internal scriptlet support”,报表名称定义为“B”,然后点击“ok”按钮。
●第三步:此时ireport已经使用了一个内部定义好的脚本,该脚本是个空壳子,没有实现任何功能。
我们也可以编辑该脚本类,如下操作:点“预览-> Scriptlet 编辑器”,此时会弹出一个编辑脚本类的窗口写入转化金额大写函数如下:static String HanDigiStr[] = new String[] {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};static String HanDiviStr[] = new String[] {"", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿","拾", "佰", "仟", "万", "拾", "佰", "仟", "亿","拾", "佰", "仟", "万", "拾", "佰", "仟"};static String PositiveIntegerToHanStr(String NumStr) { // 输入字符串必须正整数,只允许前导空格(必须右对齐),不宜有前导零String RMBStr = "";boolean lastzero = false;boolean hasvalue = false; // 亿、万进位前有数值标记int len, n;len = NumStr.length();if (len > 15) {return "数值过大!";}for (int i = len - 1; i >= 0; i--) {if (NumStr.charAt(len - i - 1) == ' ') {continue;}n = NumStr.charAt(len - i - 1) - '0';if (n < 0 || n > 9) {return "输入含非数字字符!";}if (n != 0) {if (lastzero) {RMBStr += HanDigiStr[0]; // 若干零后若跟非零值,只显示一个零// 除了亿万前的零不带到后面//if( !( n==1 && (i%4)==1 && (lastzero || i==len-1) ) ) // 如十进位前有零也不发壹音用此行}if (! (n == 1 && (i % 4) == 1 && i == len - 1)) { // 十进位处于第一位不发壹音RMBStr += HanDigiStr[n];}RMBStr += HanDiviStr[i]; // 非零值后加进位,个位为空hasvalue = true; // 置万进位前有值标记}else {if ( (i % 8) == 0 || ( (i % 8) == 4 && hasvalue)) { // 亿万之间必须有非零值方显示万RMBStr += HanDiviStr[i]; // “亿”或“万”}}if (i % 8 == 0) {hasvalue = false; // 万进位前有值标记逢亿复位}lastzero = (n == 0) && (i % 4 != 0);}if (RMBStr.length() == 0) {return HanDigiStr[0]; // 输入空字符或"0",返回"零"}return RMBStr;}public static String toRMB(Double val) {String SignStr = "";String TailStr = "";long fraction, integer;int jiao, fen;if (val < 0) {val = -val;SignStr = "负";}if (val > 99999999999999.999 || val < -99999999999999.999) {return "数值位数过大!";}// 四舍五入到分long temp = Math.round(val * 100);integer = temp / 100;fraction = temp % 100;jiao = (int) fraction / 10;fen = (int) fraction % 10;if (jiao == 0 && fen == 0) {TailStr = "整";}else {TailStr = HanDigiStr[jiao];if (jiao != 0) {TailStr += "角";}if (integer == 0 && jiao == 0) { // 零元后不写零几分TailStr = "";}if (fen != 0) {TailStr += HanDigiStr[fen] + "分";}}// 下一行可用于非正规金融场合,0.03只显示“叁分”而不是“零元叁分”// if( !integer ) return SignStr+TailStr;return "¥" + SignStr + PositiveIntegerToHanStr(String.valueOf(integer)) +"元" + TailStr + "整";}然后点Save保存,即创建了一个脚本,并再保存报表文件,此时你可以到报表文件目录找到一个BScriptlet的java文件,这就是ireport自动生成的脚本类文件(脚本类名= 报表名+Scriptlet)。
PB中一个类Word打印对话框的实现发送到手机 | 收藏全屏阅读模式字体:小 | 大Powerbuilder数据窗口可用于生成各种复杂的报表,但如何让用户在使用时控制打印份数、打印范围等信息呢?我们在开发我局MIS系统时,经过对我局报表打印需求的分析,提出了如下的功能要求:1.必须能够控制象打印份数、打印(页码)范围等信息,这是基本的要求。
2.我们系统中装有多台打印机,必须能让用户根据自己需要选择使用哪台打印机,必要时能对所选打印机进行配置。
3.在设计时,对每一个报表需要什么样的纸张,要多大的边距合适,都已确定,所以使用时不需要页面的设置。
但由于不同的报表使用不同的纸张,必须在使用时给出提示,以便用有机会换上合适的纸张(或换用合适的打印机)。
根据以上要求,我们设计了如下图所示的对话框。
下面把设计过程以及用到的技术介绍一下。
首先使用窗口画板画出窗口,名字为w_printdlg,窗口类型为respons。
“打印机”组框中的“名称”文本控制的名字为st_printname,“设置”按钮的名字为cb_printsetup。
“页面范围”组框中的无线按钮组名字分别为rb_pagearrangeall,、rb_pagearrangecurrent、rb_pagearrange,单行编辑框名字为sle_pagearrange,其enable属性为false。
“副本”组框中的编辑域名字为em_copies。
“打印”旁边的下拉列表框名字为ddlb_printwhat,列表有三项,分别为所选页面、偶数页、奇数页。
“纸张”组框中的下拉列表框名字为ddlb_paper,列表内容为Poerbuiler 定义的43种纸张类型,分别用0-42的数字来表示。
“纵向”无线按钮的名字为rb_portrait,“ 横向”无线按钮的名字为rb_landscape。
表示纵向和横向的图片框分别为p_portrait和p_landscape。
EXCEL中,如何在一个单元格中输入数值,另一个单元格中自动给出大写用Excel函数将货币数值由阿拉伯数字自动生成为中文大写格式>我们在会计数据处理中经常需要将货币数值由阿拉伯数字转换为中文大写格式,特别是批量或经常性业务中通过输入阿拉伯数字金额而自动生成中文大写尤显必要。
下面以自编支票套打工具为例说明如何实现这种格式的转换。
如图是全部用Excel函数自编农业银行转帐支票套打工具,图中内容是需要打印到转帐支票上内容,其中A-D列为支票存根部分,我们利用Excel函数对要填写大部分内容建立公式后,只要输入支票存根部分的三项基本信息(A6-A8单元格):收款单位、金额、用途,其他内容全部自动生成。
图中输入阿拉伯数字格式金额的是支票存根中A7单元格,要自动生成中文大写金额的是H3单元格,我们按照支票中的金额中文大写格式的特殊的要求,利用Excel函数对H3进行公式设置。
在H3单元格输入:=IF((A7-INT(A7))=0,TEXT(A7,"[DBNUM2]")&"元整",IF(INT(A7*10)-A7*10=0,TEXT(INT(A7),"[DBNUM2]")&"元"&TEXT((INT(A7*10)-INT(A7)*10),"[DBNUM2]")&"角整",TEXT(INT(A7),"[DBNUM2]")&"元"&IF(INT(A7*10)-INT(A7)*10=0,"零",TEXT(INT(A7*10)-INT(A7)*10,"[DBNUM2]")&"角")&TEXT(RIGHT(A7,1),"[DBNUM2]")&"分"))。
标题:excel表格中数字自动变成人民币大写的函数在许多日常工作中,我们经常会用到Microsoft Excel这一办公软件来处理数据和表格。
在处理涉及人民币金额的时候,通常需要将数字自动转换成人民币大写的形式,这不仅方便了数据的阅读和理解,也符合财务报表的要求。
下面介绍一种在Excel中实现这一功能的方法,希望对大家有所帮助。
1. 准备工作在使用Excel表格处理人民币金额时,首先需要保证表格中含有人民币金额的数字列。
假设我们要将A列的数字自动转换成人民币大写,我们可以将转换后的结果显示在B列。
2. 编写函数在B列的第一个单元格中,输入以下函数来实现将数字自动转换成人民币大写的功能:=人民币(A1)其中,A1代表了要转换的人民币金额所在的单元格,人民币()为自定义的转换函数名称,可以根据个人喜好进行修改。
3. 自定义函数在Excel中,默认并没有内置的函数来实现将数字转换成人民币大写的功能,因此需要通过自定义宏来实现。
以下是一个示例的自定义函数,供大家参考:Function 人民币(ByVal MyNumber) As StringDim Dollars, Cents, TempDim DecimalPlace, CountReDim place(9) As Stringplace(2) = " Thousand "place(3) = " Million "place(4) = " Billion "place(5) = " Trillion "' String representation of amount.MyNumber = Trim(Str(MyNumber))' Position of decimal place 0 if none.DecimalPlace = InStr(MyNumber, ".")' Convert cents and set MyNumber to dollar amount.If DecimalPlace > 0 ThenCents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) _ "00", 2))MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))End IfCount = 1Do While MyNumber <> ""Temp = GetHundreds(Right(MyNumber, 3))If Temp <> "" Then Dollars = Temp place(Count) Dollars If Len(MyNumber) > 3 ThenMyNumber = Left(MyNumber, Len(MyNumber) - 3)ElseMyNumber = ""End IfCount = Count + 1LoopSelect Case DollarsCase ""Dollars = "No Dollars"Case "One"Dollars = "One Dollar"Case ElseDollars = Dollars " 元"End SelectSelect Case CentsCase ""Cents = " and No Cents"Case "One"Cents = " and One Cent"Case ElseCents = " and " Cents " 分"End Select人民币 = Dollars CentsEnd FunctionFunction GetHundreds(ByVal MyNumber)Dim Result As StringIf Val(MyNumber) = 0 Then Exit FunctionMyNumber = Right("000" MyNumber, 3)If Mid(MyNumber, 1, 1) <> "0" ThenResult = GetDigit(Mid(MyNumber, 1, 1)) " 百"End IfIf Mid(MyNumber, 2, 1) <> "0" ThenResult = Result GetDigit(Mid(MyNumber, 2, 1)) " 十"ElseIf Mid(MyNumber, 1, 1) <> "0" And Mid(MyNumber, 2, 1) = "0" ThenResult = Result " 零"End IfEnd IfIf Mid(MyNumber, 3, 1) <> "0" ThenResult = Result GetDigit(Mid(MyNumber, 3, 1))End IfGetHundreds = ResultEnd FunctionFunction GetTens(TensText)Dim Result As StringResult = "" ' Null out the temporary function value. If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19... Select Case Val(TensText)Case 10: Result = "十"Case 11: Result = "十一"Case 12: Result = "十二"Case 13: Result = "十三"Case 14: Result = "十四"Case 15: Result = "十五"Case 16: Result = "十六"Case 17: Result = "十七"Case 18: Result = "十八"Case 19: Result = "十九"Case ElseEnd SelectElse ' If value between 20-99...Select Case Val(Left(TensText, 1))Case 2: Result = "二十 "Case 3: Result = "三十 "Case 4: Result = "四十 "Case 5: Result = "五十 "Case 6: Result = "六十 "Case 7: Result = "七十 "Case 8: Result = "八十 "Case 9: Result = "九十 "Case ElseEnd SelectResult = Result GetDigit _(Right(TensText, 1)) ' Retrieve ones place. End IfGetTens = ResultEnd FunctionFunction GetDigit(Digit)Select Case Val(Digit)Case 1: GetDigit = "一"Case 2: GetDigit = "二"Case 3: GetDigit = "三"Case 4: GetDigit = "四"Case 5: GetDigit = "五"Case 6: GetDigit = "六"Case 7: GetDigit = "七"Case 8: GetDigit = "八"Case 9: GetDigit = "九"Case Else: GetDigit = ""End SelectEnd Function4. 使用自定义函数在完成自定义函数的编写后,我们可以在B列的第一个单元格中输入=人民币(A1),然后按下Enter键,即可看到A1单元格中的人民币金额被自动转换成人民币大写的形式,并显示在B1单元格中。
PB中数据窗口打印功能的多种实现方式-2019年文档PB中数据窗口打印功能的多种实现方式随着计算机技术得到迅猛的发展,计算机管理已经在各个领域普及,社会也越来越离不开信息网络。
各种信息的管理离不开数据库的使用,powerbuilder是一款非常强大的数据库开发管理软件。
很多信息在使用时需要打印出来使用,为此Powerbuilder提供了数据窗口打印功能。
该文将对在powerbuilder中如何实现数据窗口打印功能的几种方式进行说明。
1 单一数据窗口的打印功能实现可以在程序中调用数据窗口的控件的print函数打印数据窗口中的内容,打印内容与数据窗口控件中在屏幕中显示的一致(所见即所得功能),print函数有两种语法使用格式。
1)将数据窗口控件的内容作为一个单独的打印作业把数据窗口控件的内容作为单独的打印作业发送的打印机上的语法格式:dwcontrol.print({canceldialog})其中,dwcontrol为数据窗口控件名称,canceldianlog是可选参数,是打印时是否为用户提供能够取消打印操作的对话框。
如果值是true,则提供对话框,如果值是false,则不提供对话窗口。
使用print函数打印数据窗口时,powerbuilder自动打开打印作业,然后将数据发送至打印机进行打印,打印结束后自动关闭打印作业,这个过程不需要编写然后程序代码。
2)将数据窗口控件的内容作为图形进行打印将数据窗口控件作为图形发送的打印机进行打印的语法格式:dwcontrol.print(jobname,x,y{,width,height})其中,dwcontrol是数据窗口控件名称;jobname是函数printopen函数返回的作业号;x是数据窗口左上角在打印页上x坐标位置;y同x作用一致,表示数据窗口左上角在打印页上y坐标位置;width指定数据窗口打印宽度;height为指定数据窗口打印高度。
Width和height参数可以省略,如果省略,打印按照数据窗口实际数据打印。
人民币大写转换函数可以将阿拉伯数字表示的人民币金额转换为中文大写形式。
以下是一个示例的Python函数实现:def rmb_upper(amount):units = ['', '拾', '佰', '仟']digits = ['', '万', '亿', '万亿']nums = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']result = ''yuan = str(int(amount)) # 取整数部分jiao = str(int(amount * 10) % 10) # 取小数点后一位fen = str(int(amount * 100) % 10) # 取小数点后两位# 转换整数部分for i in range(len(yuan)):digit = int(yuan[len(yuan) - 1 - i]) # 从个位开始取数if digit != 0:result = nums[digit] + units[i % 4] + resultelse:# 连续多个零只保留一个if result != '' and result[0] != '零':result = nums[digit] + resultelif i == 0:result = nums[digit] + result# 每四位加一个单位(万、亿、万亿)if i % 4 == 3 and result != '':result = digits[i // 4] + resultif result == '':result = '零'# 转换小数部分if jiao != '0':result += nums[int(jiao)] + '角'if fen != '0':result += nums[int(fen)] + '分'result += '整'return result这个函数可以将小于1万亿的人民币金额转换为中文大写形式,例如:print(rmb_upper(123456789.12)) # 壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖元壹角贰分整print(rmb_upper(10000.00)) # 壹万元整print(rmb_upper(0.05)) # 伍分整。
pb中取汉字串首字符的一个函数$PBExportHeader$uf_getfirstletter.srf$PBExportComments$ 返回给定汉字串的首字母串global type uf_getfirstletter from function_objectend typeforward prototypesglobal function string uf_getfirstletter (string as_inputstring)end prototypesglobal function string uf_getfirstletter (string as_inputstring);//Function name : uf_GetFirstLetter//Used to : 返回给定汉字串的首字母串,即声母串//Input Arguments: as_InputString - string , 给定的汉字串//Return Value : ls_ReturnString - String , 给定的汉字串的声母串,一律为小写//Notice : 1. 此方法基于汉字的国标汉字库区位编码的有效性,不符合此编码的// 系统此函数无效!// 2. 若汉字串含有非汉字字符,如图形符号或ASCII码,则这些非汉字字符// 将保持不变.//Sample : ls_rtn = uf_GetFirstLetter("中华人民共和国")// ls_rtn will be : zhrmghg//Scripts:char lc_FirstLetter[23] //存放国标一级汉字不同读音的起始区位码对应读音string ls_ch //临时单元string ls_SecondSecTable //存放所有国标二级汉字读音string ls_ReturnStr //返回串integer li_SecPosValue[23] //存放国标一级汉字不同读音的起始区位码integer i , jinteger li_SectorCode //汉字区码integer li_PositionCode //汉字位码integer li_SecPosCode //汉字区位码integer li_offset //二级字库偏移量//Set initial valueli_SecPosValue[]={1601,1637,1833,2078,2274,2302,2433,2594,2787,3106,3212,3472,3635,3722, 3730,3858,4027,4086,4390,4558,4684,4925,5249 }lc_FirstLetter[] = {"A", "B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","W","X","Y","Z"}ls_SecondSecTable="CJWGNSPGCGNE[Y[BTYYZDXYKYGT[JNNJQMBSGZSCYJSYY[PGKBZGY[YWJKGK LJYWKPJQHY[W[DZLSGMRYPYWWCCKZNKYYGTTNJJNYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFY XJWZLTBNCXJJJJTXDTTSQZYCDXXHGCK[PHFFSS[YBGXLPPBYLL[HLXS[ZM[JHSOJNGHDZQYKLGJHSG QZHXQGKEZZWYSCSCJXYEYXADZPMDSSMZJZQJYZC[J[WQJBYZPXGZNZCPWHKXHQKMWFBPBYDTJ ZZKQHYLYGXFPTYJYYZPSZLFCHMQSHGMXXSXJ[[DCSBBQBEFSJYHXWGZKPYLQBGLDLCCTNMAYDDK SSNGYCSGXLYZAYBNPTSDKDYLHGYMYLCXPY[JNDQJWXQXFYYFJLEJPZRXCCQWQQSBNKYMGPLBMJ RQCFLNYMYQMSQYRBCJTHZTQFRXQHXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSWLYCJQXSJNQBSC TYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXH WYWSBHTRXXGLHQHFNM[YKLDYXZPYLGG[MTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLY ZHSXLZCGHPXZHZNYTDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNG MMCLGWZSZXZJFZNMLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGANHDAASHTCPLCPQ YBSDMPJLPZJOQLCDHJJYSPRCHN[NNLHLYYQYHWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMY DJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYD[FCXYHLXCHYZJQ[[QAGMNYXPFRKSSBJLYXYSYGLNSCMH ZWWMNZJJLXXHCHSY[[TTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLY[DCCWZOCWKCCSBNHCPD YZNFCYYTYCKXKYBSQKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQH[ PQ[QSCFYMNDMGBWHWLGSLLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZP MGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFH B[GDMYCNQQWLQHJJ[YWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSL[HTZKZJECXJCJNMFBY[SFY WYBJZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDX HPLQKZCZWALSBCCJX[YZGWKYPSGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMS XLZJQQHZYJCZYDJWBMYKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWB QCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHGJLJAXFGFJZSLCFDQZLCLGJDJCSNZL LJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQ LZNWCZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJD FCJXDYGJQJJPMGWGJJJPKQSBGBMMCJSSCLPQPDXCDYYKY[CJDDYYGYWRHJRTGZNYQLDKLJSZZGZ QZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJSBBSGGHFJLYPMZJNLYYW DQSHZXTYYWHMZYHYWDBXBTLMSYYYFSXJC[DXXLHJHF[SXZQHFZMZCZTQCXZXRTTDJHNNYZQQ MNQDMMG[YDXMJGDHCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGSQQDDJCMBKZFFXMK DMDSYYSZCMLJDSYNSBRSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJ[GYPZLTCSMCNBTJBQFKTHBY ZGKPBBYMTDSSXTBNPDKLEYCJNYDDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQK SECSHALQFMMGJNLYJBBTMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDL QCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLG[DJLSLYGKDZPZXJYYZLWCXSZFGWYYDLYHCLJSCM BJHBLYZLYCBLYDPDQYSXQZBYTDKYXJY[CNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPPXJCJLZCSHLTOLJN MDDDLNGKAQHQHJGYKHEZNMSHRP[QQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZS WLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFY QXSZYYDYJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDGDZDBLZYYCXNN CSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZ JCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNP QCJPFCZLCLZXZDMXMPHJSGZGSZZQLYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZMALBXYFBPNL SFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQFHBSAQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHG KBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ"//Get it !ls_ReturnStr = ""For i=1 to Len(as_InputString) //依次处理as_InputString中每个字符ls_ch=Mid(as_InputString , i , 1)If Asc(ls_ch)<128 then // 非汉字ls_returnStr = ls_returnStr+ls_ch // 不变Else // 是汉字ls_ch = Mid(as_InputString , i , 2) // 取出此汉字li_SectorCode = Asc(Left(ls_ch, 1)) - 160 //区码li_PositionCode = Asc(Right(ls_ch, 1)) - 160 //位码li_SecPosCode = li_SectorCode*100 + li_PositionCode // 区位码If li_SecPosCode>1600 and li_SecPosCode<5590 then // 第一个字符For j=23 to 1 Step -1 // 找声母If li_SecPosCode>=li_SecPosValue[j] thenls_returnStr = ls_returnStr + lc_FirstLetter[j]ExitEnd ifNextElse // 第一个字符li_offset = (li_SectorCode - 56 ) *94 + li_PositionCode - 1 // 计算偏移量If li_offset>=0 and li_offset<=3007 then //二区汉字ls_returnStr = ls_returnStr + Mid(ls_SecondSecTable, li_offset , 1) //取出此字声母End ifEnd ifi = i+1 // 指向下一个汉字End ifNext // 处理完毕//Return resultReturn lower( ls_returnStr ) //返回as_InputString 的声母串end function。
人民币大小写转换程序1.开发背景随着社会科学的进步,在大众的生活中最为显而易见的是被现代化的智能所替代,许多的中国的传统文化在这样的时代中逐渐的被替代,然而实际中确有很多是我们很实用而去不可遗弃的中国古老文化!而中文数字大写就是我们生活中很实用的中国文化!不仅很好的传承了我们国家人民的智慧。
更在现实生活中避免了不少的金额的麻烦!为此笔者用java编写了一个能够实现大小写转换的程序。
2.程序作用为了方便公司、银行和涉及金额交易时实现人民币的转换。
3.程序主要问题及解决方案:3.1利用String类中的方法来实现输入的数字中整数和小数的分离3.1.1在进行分离前必须先判断索要转换的字符串中小数点存在或者不存在的情况,这样才能够保证是否输入小数点都不会影响到程序的运行,更加完善了程序的可运行性,以下是可能出现的3中情况。
3.1.1.1利用String类中ind exOf()方法来实现确保小数点后面只有3位数if((rmbstrtemp.indexOf(".")>0)&&(rmbstrtemp.length()-rmbstrtemp.ind exOf(".")>3)){rmbstrtemp=rmbstrtemp.substring(0,rmbstrtemp.length()-((rmbstrtemp.l ength()-rmbstrtemp.indexOf("."))-3));}3.1.1.2没有输入小数点的时候用StringBuffer类中的sppend()方法在后面添加“.00”以确保小数点后面的两位小数if(rmbstrtemp.ind exOf(".")<0 ) {rmbstrall.append(".00");}3.1.1.3只输入了小数点的时候。
(在后面添加00以确保小数点后面的两位小数)if((rmbstrtemp.length()-rmbstrtemp.indexOf("."))==1) {rmbstrall.append("00");}3.1.2用String类中的ind exOf()和substring()方法的结合将整数和小数分离。
彻底解决PB打印金融业务单据方法(深圳:独孤求败 2003-05-19)----打印业务单据、报表,历来是金融业务类应用软件开发的重点,一般可占整个工作量的三分之一左右。
目前国内的不少软件开发工具在这方面做了大量的工作,不过基本上是基于xbase数据库的产品,Client /Server方面的开发工具几乎无一例外的是国外的产品,例如PowerBuilder、Delphi、VisualBasic等等。
但是国外的产品在打印中国式报表,特别是金融类单据、报表功能十分微弱。
这是国外、国内的国情不同所致;看来这样的问题只有中国人自己来想办法解决。
本文就自己在使用PowerBuilder开发金融类业务软件过程中积累的打印金融单据、报表一些方法作些介绍,就打印中国式报表的问题做点探索。
一、使用数据窗口打印的优点及其局限----数据窗口是powerbuilder优于其他可视化开发工具的最主要的特色。
它可以使用五种数据源:Quick Select,SQLSelect,Query,External,StoredProceduce,并提供了一系列预定义的表现风格:自由格式、统计图、网格、标签、分组报告、表格、N-UP、大文本、OLE2.0、交叉表。
对于每一种风格,PowerBuild er都提供了标准的报表列(标题列,细节列,总计列,分组标题列,分组脚注列),显示格式、排序、分组和复合显示形式(如一个带有相关图表的电子表格用户界面)。
----一般来说,应用软件主要分为数据录入、数据查询、数据修改、数据打印等功能模块。
根据笔者的开发经验,数据窗口技术对于数据查询、修改类的窗口,有明显的优越性。
对于数据录入,一般的应用都要求按凭证的式样建立数据的录入窗口(或屏幕),使用PowerBuilder提供的用户自定义对象,建立仿凭证样子的数据录入窗口,并不是一件困难的事。
对于数据的打印,如果是仅仅是打印参数表或者普通的统计报表,数据窗口也能胜任。
在PB中实现数字的英文大写和中文大写.net-电脑资料PowerBuilder是当前得到广泛应用的C/S 数据库前端开发工具, 在使用PB的过程中,经常遇到要将数字进行英文或中文的大写转换,尤其是在处理金额的时候,本文整理了我在实践中用到的转换方法,提供给大家参考,。
一、英文大写转换以下是进行英文大写转换的函PowerBuilder是当前得到广泛应用的C/S数据库前端开发工具, 在使用PB的过程中,经常遇到要将数字进行英文或中文的大写转换,尤其是在处理金额的时候,本文整理了我在实践中用到的转换方法,提供给大家参考。
一、英文大写转换以下是进行英文大写转换的函数内容,函数名为dtoe://****** 阿拉伯数--- >英文数 ******string aa,bb,T1,T2,T3,B,W,CC,a1decimal a=0,c=0,a2INTEGER V,Maa="ONE TWO THREE FOURFIVE SIX SEVEN "+&"EIGHT NINE TEN ELEVEN TWELVETHIRTEEN FOURTEEN FIFTEEN "+&"SIXTEEN SEVENTEENEIGHTEEN NINETEEN "bb="TWENTY THIRTY FORTY FIFTY SIXTY SEVENTYEIGHTY NINETY "//**** 进入时 --- > tT=round(t,2)T1=STRING(T)DO WHILE POS(T1,",")< >0V=POS(T1,",")T1=MI D(T1,1,V - 1)+MID(T1,V+1)LOOPT2=" "T3=T1IF POS(T3,".")< >0 THENV=POS(T3,".")T1=MID(T3,1,V - 1)T2=MID(T3,V+1)END IFT1=SPACE(10 - LEN(T1))+T1CC=T1B=" "W=" "M=9//*** 整数处理 ***do while m >0if MID(clearcase/" target="_blank" >cc,m+1,1)=" " then exitend ifif INTEGER(MID(cc,m - 1,3))< >0 thenif m=6 thenW=" THOUSAND "+welseif m=3 thenW=" MILLION "+wend ifend ifA=INTEGER(MID(cc,m,2))//*** 小于 100 的数 ***if a< >0 thenif a< 20 thenB=RIGHTtrim(MID(aa,(a - 1)*9+1,9))elseA1=STRING(a,'00')A2=INTEGER(MID(a1,1,1))b=RIGHTtrim(mid(bb,(a2 - 2)*7+1,7))a2=INTEGER(MID(a1,2,1))if a2< >0 thenB=RIGHTtrim(b+"-"+MID(aa,(a2 - 1)*9+1,9))end ifend ifW=b+wend ifA=INTEGER(MID(cc,m - 1,1))//*** 100--999 的数 ***if a< >0 thenb=RIGHTtrim(mid(aa,(a - 1)*9+1,9))+" HUNDRED " if w< >" " and m=9 thenb=b+"AND "end ifw=b+wend ifend ifm=m - 3LOOP//*** 小数处理 ***if w=" " thenw="ZERO "end ifif t2< >" " AND T2< >"00" thenw=trim(w)+" & "+t2+"/100"end if//*** 结果 --- > wreturn w二、中文大写转换以下是进行中文大写转换的函数内容,函数名为dtormb:decimal ystring je,x,hz1,hz2,e,h,f,mint b,ay=mjeX = trim(string(Y))B = len(X)-3A = 1E = mid(X,A,1)HZ2 = '零壹贰叁肆伍陆柒捌玖'HZ1 = '仟佰拾亿仟佰拾万仟佰拾元'JE = ' 'do while E< >'.'H = mid(HZ2,integer(E)*2+1,2)F = mid(HZ1,24 - (B - A)*2 - 1,2)if E< >'0' or (E='0' and (F='亿' or F='万' or F='元')) then JE = trim(JE)+H+FelseJE = trim(JE)+Hend ifA = A+1E = mid(X,A,1)loopA = A+1E = mid(X,A,1)H = mid(X,A+1,1)if E='0' and H='0' thenJE = JE+'整'elseif E='0' thenJE = JE+'零'+mid(HZ2,integer(H)*2+1,2)+'分'elseif H='0' thenJE = JE+mid(HZ2,integer(E)*2+1,2)+'角整'elseJE = JE+mid(HZ2,integer(E)*2+1,2)+'角'+mid(HZ2,integer(H)*2+1,2)+'分'end ifend ifend ifB = len(JE)A = 1do while A< BM = mid(JE,A,4)if M='零元' or M='零万' or M='零亿' or M='零零' then JE = mid(JE,1,A - 1)+trim(mid(JE,A+2,40))A = A - 2B = B - 2end ifA = A+2loopreturn JE。
B1=IF(A1<0,"负",)&TEXT(TRUNC(ABS(A1)),"[DBNum2]G/通用格式")&"元"&IF(ROUND(A1,3)=ROUND(A2,),"整",TEXT(RIGHT(TRUNC(A1*10),1),"[DBNum2]G/通用格式")&"角"&IF(ROUND(A1,3)=ROUND(A1,1),"整",TEXT(RIGHT(ROUND((A1*100),),1),"[DBNum2]G/通用格式")&"分"))=IF(A1="","",IF(A1<0,"负",)&IF(INT(A1),TEXT(INT(ABS(A1)),"[dbnum2]")&"元",)&IF(INT(ABS(A1)*10)-INT(ABS(A1))*10,TEXT(INT(ABS(A1)*10)-INT(ABS(A1))*10,"[db num2]")&"角",IF(INT(ABS(A1))=ABS(A1),,IF(ABS(A1)<0.1,,"零")))&IF(ROUND(ABS(A1)*100-INT(ABS(A1)*10)*10,),TEXT(ROUND(ABS(A1)*100-INT(A BS(A1)*10)*10,),"[dbnum2]")&"分","整"))在excel表格中人民币小写金额自动转大写金额的方法一个自定义函数就可以实现!!!使用自定义函数下面就通过此例也来介绍使用自定义函数的全过程,即使是初学Excel的朋友,也会感觉其操作实际上是非常简单的。
人民币小写转大写函数MytoUpper对于做财务工作的我来说,经常要与资金货币打交道,在填写各种做账凭证的时候,人民币大小写必须匹配、准确。
在Excel表格中我们就期望当我输入了小写金额的时候,在特定单元格中能够自动出现其大写金额,这样就能完美匹配大小写金额的一致性了。
而小写转大写的函数公式太过复杂,我写了一个简单的自定义函数来解决这个问题。
效果:代码:源代码分享:'小写转大写的自定义函数Function MytoUpper(sinData As Double) As StringDim strResult As String, longPart As Long, sinPart As Single strResult = ''If sinData = Int(sinData) ThenstrResult = WorksheetFunction.Text(sinData, '[DBNum2]') & '元整'ElselongPart = Int(sinData) '整数部分sinPart = sinData - longPart '小数部分If longPart <> 0 ThenstrResult = WorksheetFunction.Text(longPart, '[DBNum2]') & '元' & _WorksheetFunction.Text(Int(sinPart * 10), '[DBNum2]') & '角' & _WorksheetFunction.Text(sinPart * 100 Mod 10, '[DBNum2]') & '分'ElsestrResult = WorksheetFunction.Text(Int(sinPart * 10), '[DBNum2]') & '角' & _WorksheetFunction.Text(sinPart * 100 Mod 10, '[DBNum2]') & '分'End IfEnd IfMytoUpper = '人民币 ' & strResultEnd Function如果这个函数你也想能够在你的表格中得以使用的话,就ctrl c复制我的源代码,打开你需要使用这个函数的Excel表格,然后按住“ALT F11”进入VBE编程环境,点击菜单栏上面的“插入”——选择“模块”,再ctrl v粘贴你复制的代码进去,然后将表格保存成.xls 或者xlsm格式,那么你这个表格中就自动添加了这样的一个自定义函数了,在需要填充大写金额的单元格写“=MytoUpper(小写金额的单元格)”,那么以后只要更改小写金额单元格中的数值,大写金额就能自动被填充;以后再也不用纠结于写了小写忘改大写的这样的乌龙事件了。
pb实现打印中人民币大写
根据我国的财务票据的当前特点,仍需要财务票据中人民币有大写一项。
现在本人用PB编写了一个人民币大写的函数。
您只要将您数据窗口中的人民币小写项数据值取出,利用这个函数将其转换成大写方式,然后再赋到数据窗口的某项中即可。
string jet,dxs,xxs,jew1,jew2,jew,jeq,jeb,jes,jeg,jej,jef
long ls,lss
string jedx
jet=string(yjk)
ls=len(jet)
lss=10 - ls
jet=space(lss)+jet
dxs='零壹贰叁肆伍陆柒捌玖/'
xxs='0123456789 '
jew2=mid(jet,1,1)
jew1=mid(jet,2,1)
jew=mid(jet,3,1)
jeq=mid(jet,4,1)
jeb=mid(jet,5,1)
jes=mid(jet,6,1)
jeg=mid(jet,7,1)
jej=mid(jet,9,1)
jef=mid(jet,10,1)
jew2=mid(dxs,pos(xxs,jew2)*2 - 1,2)+"佰"
jew1=mid(dxs,pos(xxs,jew1)*2 - 1,2)+"拾"
jew=mid(dxs,pos(xxs,jew)*2 - 1,2)+"万"
jeq=mid(dxs,pos(xxs,jeq)*2 - 1,2)+"仟"
jeb=mid(dxs,pos(xxs,jeb)*2 - 1,2)+"佰"
jes=mid(dxs,pos(xxs,jes)*2 - 1,2)+"拾"
jeg=mid(dxs,pos(xxs,jeg)*2 - 1,2)+"元"
jej=mid(dxs,pos(xxs,jej)*2 - 1,2)+"角"
jef=mid(dxs,pos(xxs,jef)*2 - 1,2)+"分"
jedx=jew1+jew+jeq+jeb+jes+jeg+jej+jef
return jedx。