ITPub博客

首页 > Linux操作系统 > Linux操作系统 > XML 输出 EXCEL

XML 输出 EXCEL

原创 Linux操作系统 作者:leexiaodong 时间:2009-08-13 10:31:31 0 删除 编辑

完成XML报表的制作挂到系统中后, 默认的输出格式是PDF,想要修改的话还要点击'Option'按钮到另一个界面上去修改,客户不胜其烦,我们也很恼火直骂Oracle的娘。好在群众的智慧是无限的,在同事Allen和**斑竹Phoenix的帮助下,找到了解决方法,效果不错。

        方法一 Report Builder + XML 实现
        Step(1)
在Report Bulder中添加Number类型参数P_CONC_REQUEST_ID;
        
 
        Step(2)
修改Befor Report Trigger,添加以下代码。
        --update layout
       UPDATE  fnd_conc_pp_actions
               SET  argument5='
RTF'                      
        WHERE  concurrent_request_id=
:P_CONC_REQUEST_ID
              AND  action_type=6;
       注:此处将输入格式设置为Word,若想设成Excel或Html,可将'RTF'替换成'EXCEL'或'HTML'

        方法二 PL/SQL Store Procedure + XML 实现;
       Procedure XML_PRINT(Errbuf  Out Varchar2,Retcode Out Varchar2) Is
                ctx dbms_xmlgen.ctxhandle;
                c_result clob;
                b Varchar2(5000);
                Type ref_cursor Is Ref Cursor;
                 v_source ref_cursor;
                c_long Number;
                c_int Int;
        Begin
               
--
设置XML报表模认输出格式
               UPDATE_XML_OUTPUT_FORMAT ;
                --
定义数据,数据集必须为游标变量
               Open v_source For
                         Select HEADER_ID       DN_HEADER_ID        ,
                                      SOLD_TO_ORG_ID  PICK_SEQUENCE_ID    ,
                                      CUST_PO_NUMBER  PS_HEADER_BATCH_NUM ,
                                      ORG_ID          BATCH_ID            ,
                                      SOLD_TO_ORG_ID  DELIVERY_ID         ,
                                      ORDER_NUMBER    DN_NUMBER           ,
                                      BOOKED_FLAG     PRINTED_FLAG            
                           From OE_ORDER_HEADERS_ALL
                          where rownum < 15;
                --
定义XML CLOB文件
                          ctx := dbms_xmlgen.newContext(v_source);
                -- generate the CLOB as a result.
                          c_Result := dbms_xmlgen.getXML(ctx);
                 --
以文本形式输出XML文件   
                          c_long := length(c_result);
                          c_int := c_long/50-0.5;
                          For a In 1..c_int+1 Loop
                                 b := dbms_lob.substr(c_result,50,(a-1)*50+1);
                                 fnd_file.PUT(fnd_file.OUTPUT,b);
                                 --dbms_output.put_line(b);
                          End Loop;
                dbms_xmlgen.closeContext(ctx);
               Close v_source;
       End xml_print;

      
注:这是斑竹Phoenix提供的用PL/SQL Store Procedure产生XML数据的方法,简单实用。


      Procedure UPDATE_XML_OUTPUT_FORMAT Is
            
  pragma autonomous_transaction;
       BEGIN
               UPDATE fnd_conc_pp_actions
                      SET  argument5='RTF'                      
               WHERE  concurrent_request_id= fnd_profile.value('CONC_REQUEST_ID')
                      AND  action_type=6;
             
 COMMIT ;
        END ;
       注:这里的重点是利用自治事务修改输出格式,使用方法与方法一类似,附件是参考源代码。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/67253/viewspace-612087/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Find Profile ~~
请登录后发表评论 登录
全部评论

注册时间:2009-08-13

  • 博文量
    64
  • 访问量
    122010