Report_客制化报表输出Excel后去0问题(案例)

本文讨论了Oracle EBS报表输出至Excel时,因Excel自动处理导致字段错误的问题,并提供了使用PLSQL输出报表及BI Publisher进行格式设置的解决方案,避免字段被误解析。

2014-02-01 Created By BaoXinjian

一、摘要


Oracle  EBS 提供多种报表的开发和输出形式,由于MS Excel在处理数据方面的优势明显,报表输出用Excel打开是很常见的开发项。

但是正是由于Excel的“过于智能而不智能”,导致有时输出字段会被Excel自动处理,导致数据错误。

例如:

系统内部字段,物料编码/订单标号 等等字段在数据库内存储的格式为 varchar,

在某些业务或者需求下,编码方式为全数字的形式,如"100230001","100230002",...

这样的字段在系统中没问题,报表输出到Excel也无问题;而有情况可能是,编号为 "000031001", "000031002","000031003",....

这样的情况,系统中是存储了9位数的字符,而报表输出到Excel之后,Excel就会认为他是一个数字,而非字符串,

从而出现字符串前的"0"被截取,变成 "31001", "31002","31003",.... 这样的错误不易被发觉,但是是一个很不友好的错误。

 

二、解决方案 - PLSQL输出报表


这种类型的报表输出的是html标签(或者XML标签),这种报表被截位的修复方法是在输出的时候,把这个字段放在 =" "  内,

例如,PLSQL代码片段为:
fnd_file.put_line(fnd_file.output, '<div>000031001</div>');
变成:
fnd_file.put_line(fnd_file.output, '<div>="000031001"</div>');
或者
fnd_file.put_line(fnd_file.output, '<div>''000031001</div>');

解释:

前一种方法,在Excel中,= 代表公式,而用双引号括起来之后就是字符串的意思,就是说设置当前单元格为等于当前的值转换为字符串的意思,类似于 oracle的 to_char() ;

后一种方法,Excel中,在单元格值最前面加一个单引号表示这个单元格为“坏公式”,就是不自动计算的意思,Excel单元格要显示公式,也是这种方法。

 

三、解决方案 - BI Publisher


属性的格式设置

 

Thanks and Regards

转载:小L - http://www.cnblogs.com/xiaoL/p/4059804.html

转载于:https://www.cnblogs.com/eastsea/p/4196482.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值