oracle输出带的数字格式,Oracle EBS XML报表中数字的处理(Excel输出)

不知大家是否遇到这样一个情况,报表中输出数字过大或者以“0”字符开头的时候(仅指在Excel输出中),会以科学计数法的形式显示或者省略0的形式显示,显然这样的效果不是客户想要的结果。相信大家的第一想法就是将数字转化为字符的格式,的确我们可以有不同的方法做这样的处理,自己对项目上出现此类的情况提供一些两种处理方式,均在rtf模板中处理(一般建议第一种方式):

1. 在对应的XML标签中的窗体域中写如下代码(此方法对金额格式财务化也有借鉴作用)

2. 对有比较大数字的列,在单元格中加上Excel的T()函数,比如,=T("AMOUNT")

3. 在程序里面控制,类似:select '''' || '0000' from dual;(针对数字型)

4. html版本的类似处理:

.context td{

border:1px solid black;

padding:0.2mm 0.2mm 0.2mm 0.2mm;

white-space:nowrap;

font-size: 9.5pt;

mso-number-format:"\@";

}

同时需

变为 

5. 当然如果查看报表的人员愿意自己格式化来查看,那也不失为一种解决方法,不过从对甲方人员的了解来看,他们不太会愿意去多点击一下鼠标

说明:

上面1、2、3、4种方式都会有一个明显的弊端,即无法对单元格数据进行计算。因此如果需要对单元格进行计算,则不能选择以上两种方式;如果能够确定数据的量级大小,则可选择直接数字输出,不作任何处理。

同时,对于应用方式1出的excel报表,仔细观察你会发现,字符的首尾都多出一个空字符,如下图标记处所示:

baa92f56a170514e8bd5619ba9ab3a00.png

延伸思考:Excel内自带有货币形式的显示,看能不能将此方式在rtf模板里面函数化,以此达到想要的效果。

附上金额财务化函数:

–转换金额输出格式-字符

Function Get_Amount_Format(p_amount in number) return varchar2 is

l_amout_value varchar2(9999);

Begin

if p_amount <> 0 then

select trim(to_char(p_amount, '999,999,999,999,999,999.99'))

into l_amout_value

from dual;

return l_amout_value;

else

l_amout_value := '0.00';

return l_amout_value;

end if;

Exception

When others Then

Log_Msg('p_amount change format error:' || p_amount || '=' ||

sqlerrm);

return null;

End Get_Amount_Format;

以下是效果图(数据均为测试数据):

9523e4fe9ab073b9dd074f0feebeb953.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值