程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle EBS XML報表中數字的處理(Excel輸出)

Oracle EBS XML報表中數字的處理(Excel輸出)

編輯:Oracle數據庫基礎
 

 不知大家是否遇到這樣一個情況,報表中輸出數字過大或者以“0”字符開頭的時候(僅指在Excel輸出中),會以科學計數法的形式顯示或者省略0的形式顯示,顯然這樣的效果不是客戶想要的結果。相信大家的第一想法就是將數字轉化為字符的格式,的確我們可以有不同的方法做這樣的處理,自己對項目上出現此類的情況提供一些兩種處理方式,均在rtf模板中處理(一般建議第一種方式):

1. 在對應的XML標簽中的窗體域中寫如下代碼(此方法對金額格式財務化也有借鑒作用)

  <fo:bidi-override direction="ltr" unicode-bidi="bidi-override"><?AMOUNT?> </fo:bidi-override>

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:"\@";
    }

 同時需<TD nowrap align="left"> 變為 <TD nowrap align="left" x:str>

5. 當然如果查看報表的人員願意自己格式化來查看,那也不失為一種解決方法,不過從對甲方人員的了解來看,他們不太會願意去多點擊一下鼠標

說明:
    上面1、2、3、4種方式都會有一個明顯的弊端,即無法對單元格數據進行計算。因此如果需要對單元格進行計算,則不能選擇以上兩種方式;如果能夠確定數據的量級大小,則可選擇直接數字輸出,不作任何處理。
    同時,對於應用方式1出的excel報表,仔細觀察你會發現,字符的首尾都多出一個空字符,如下圖標記處所示:

       

Oracle EBS XML報表中數字的處理(Excel輸出)
 

延伸思考: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;

  以下是效果圖(數據均為測試數據):

     

Oracle EBS XML報表中數字的處理(Excel輸出)2
 

 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved