关于PL/SQL输出HTML(转化为EXCEL)金额采用会计专业显示

来源:互联网 发布:arri alexa 软件 编辑:程序博客网 时间:2024/05/01 12:42

----网页文件定义样式,注意.TEST2样式中的显示用的是会计专业单元格样式

PROCEDURE html_begin(p_titleINVARCHAR2)IS

BEGIN

  cux_conc_utl.out_msg('<html

                             xmlns:v="urn:schemas-microsoft-com:vml"

                             xmlns:o="urn:schemas-microsoft-com:office:office"

                             xmlns:x="urn:schemas-microsoft-com:office:excel" >

              <head>

              <metahttp-equiv="Content-Type" content="text/html;charset=UTF8">

              <title>' || p_title ||'(' ||

                      g_request_id||')' ||

                      '</title>

   <STYLE>

     BODY  { background-color : #FFFFFF; font-family :宋体font-size : 10pt;color : black;}

     TR{  font-family : Verdana;  font-size : 10pt;  color : black;}

     .TEST1{ font-family :Verdana;  font-size : 10pt;  color : black;}

     .TEST2{ mso-number-format:"_ *\#\,\#\#0\.00_ \;_ * \\-\#\,\#\#0\.00_ \;_ * \0022-\0022??_ \;_ \@_ ";}

    </STYLE>

 

              </head>

              <body>

              <h3align=CENTER>' || p_title ||

                      '</h3>

              <h5 align=left>提交日期:' ||

                      to_char(SYSDATE, g_date_mask) ||'</h5>');

END html_begin;

 

 

下面的代码主要是实现样式的调用,注意不要在文档开始定义TD的样式,否则定义的.TEST1,.TEST2样式会被覆盖掉,达不到其需要的效果。

 

FUNCTIONget_td_row_right(p_textINNUMBER)RETURNVARCHAR2IS

BEGIN

 

 IF p_text =0THEN

    ---0直接显示,不加小数点后的两个0

    RETURN'<td align="right"class="TEST1">' || '0' ||'</td>';

 

 ELSE

 

    RETURN'<td align="right"class="TEST2">' || to_char(p_text,

                                                        '999,999,999,999,990.99') ||'</td>';

 ENDIF;

END get_td_row_right;

 

FUNCTIONget_td_row_right(p_textINNUMBER)RETURNVARCHAR2IS

BEGIN

  ---0用横线显示,此处来源于样式中的定义

  RETURN'<td align="right"class="TEST2">' || to_char(p_text,

                                                      '999,999,999,999,990.99') ||'</td>';

ENDget_td_row_right;

 

0 0