方式1:使用代码生成
1 首先新建一个doc文件然后定义好自己的模板,如图:
2另存为xml格式的文件然后用nopate++或者记事本打开,把代码全部复制下来,如图
3在pl/sql中贴入代码,使用fnd_file.put_line(fnd_file.output,'第二步的代码')写出excel报表
说明:应该有三部分组成,第一是<Row>......</Row>之前的代码,第二是<Row>......</Row>之间这里是写你的数据,第三是<Row>......</Row>之后的
4 写你自己的数据,在<Data ss:Type="Number">'||数据||'</Data>写,当然可以用循环满足你的要求
5挂载,步骤如下(仅在我ebs环境中演示)
(1)首先定义可执行,在application developer下面的 并发->可执行
(2)定义程序,在application developer下面的 并发->可程序
(3)挂载到请求组,切换职责 系统管理员,安全性->责任->请求,如果不知道请求组名字可以在定义中查出来(查询先按F11,输入框颜色变色后输入值,然后在按ctr + F11查询)
(4)切换职责,你挂在哪里就到哪里,我这里是客户化,查看->请求,然后提交新的请求
5找到你挂载的请求,发起请求,然后查看就好了
方式二:使用模板
1 创建如下模板,for-each一般是用来做循环,不做数据替换,pname(自定义变量)一般是用来替换你的数据,其他栏位自行设定,同理
2 上传模板,切换职责 Oracle XML Publisher,主页->数据定义,
名称,代码随便填,代码要记住我这里弄成一样的,产品应用就是你要挂载的职责
3 创建数据模板,在职责下面点击模板,然后在网页点击创建模板,名称,代码随便填,数据定义选择第二部创建的数据定义,为了避免出错,这里我模板名称,代码都和数据定义的一样,几下模板的代码,稍后用到
4 编写pl/sql语句,这里我就直接贴代码了
procedure rpttemp(Errbuf In Out Varchar2,
Retcode In Out Varchar2) is
cursor emps_all is select * from emps;
begin
fnd_file.put_line(fnd_file.output,
'<?xml version = "1.0" encoding = "UTF-8"?>');
fnd_file.put_line(fnd_file.output, '<custom>');
for uu in emps_all loop
fnd_file.put_line(fnd_file.output, '<datas>');
fnd_file.put_line(fnd_file.output,'<pname>' || uu.name || '</pname>');
fnd_file.put_line(fnd_file.output,'<sex>' || uu.sex || '</sex>');
fnd_file.put_line(fnd_file.output,'<basesal>' || uu.basesal || '</basesal>');
fnd_file.put_line(fnd_file.output,'<comsal>' || uu.comsal || '</comsal>');
fnd_file.put_line(fnd_file.output,'<sumsal>' || uu.sumsal || '</sumsal>');
fnd_file.put_line(fnd_file.output,'<sysdates>' || uu.startdate || '</sysdates>');
fnd_file.put_line(fnd_file.output, '</datas>');
end loop;
fnd_file.put_line(fnd_file.output, '</custom>');
end rpttemp;
5挂载到职责下的并发请求下,跟方式的步骤一致,稍微不同的地方在于,定义程序时,简称要和模板的代码一致,如图
ok,到此两种方式都讲完了