Oracle BI Publisher(XML Publisher)のXLSテンプレート

こんにちは、この記事では、BI Publisherを使用して、このプログラムのネイティブ* .xls形式でMS Excelのテンプレートをコンパイルした経験についてお話したいと思います。



簡単な紹介





Oracle eBSを使用する場合、追加のレポート(およびそれに応じてBI Publisherのテンプレート)を作成することが必要になる場合があります。 この場合、同じレポートのBEFORE REPORTトリガーのデータで満たされたテーブルから収集されたかなり複雑なレポートがありました。 レポートの列の数は、ダイナミクスを変更する可能性があります。





テンプレートはもともとRTF形式で作成されました。 列の数ごとに、レポートの異なるバージョンが提供されました。 出力では、必要なデータを含むXLSファイルを受け取っているはずです。







問題点





出力ファイルがXLSファイルの場合、次の問題、またはより正確には制限が発生する可能性があります。



1)Excel出力ファイルを必要に応じて正確に表示する必要があります。必要な列は必要な場所にあり、どこにも残されていません。

2)データタイプがExcel出力に転送されるように、つまり、数値はExcelで数値データタイプを持ち、日付は日付タイプなどを持ちます...

3)「0」(先頭のゼロ)で始まるデータを送信する場合、先頭のゼロは切り捨てられます。つまり、データの整合性を維持する必要があります。

4)小数点(小数部)の後にゼロを含むデータを送信する場合にも同じ問題が発生します。



属性の開始/終了に2つのスペースまたは特殊文字を追加することで3および4の問題を解決できる場合、残りは少し複雑です。



私の場合、単一のゼロを失うことなく、セルに他の文字を許可することなく、値「0000」をExcelに渡す必要がありました。



RTFテンプレートを使用して作成されたExcel出力ファイルの他の制限については、 こちらをご覧ください。



ひらめき





インターネットで長時間検索した結果 Oracle ブログでReal Excel Templateの言及が見つかりました



つまり、MS Excelを離れることなく、レジを離れることなくテンプレート作成できるようになりました。 これを行うには、標準* .XLSファイルを作成し、その中で奇跡のテンプレートとの戦いを開始する必要があります。



まず、RTFテンプレートとXLSテンプレートの違いについて少し説明します。



1)RTFでは、要素を指定するためにタグ<?ELEMENT_NAME?>



を配置する必要があり、XLSでは要素タグXDO_?ELEMENT_NAME?



を持つセルのプロパティに書き込む必要がありますXDO_?ELEMENT_NAME?



。 例:







2)RTFでは、グループの開始を示すために、タグ<? for-each: GROUP_NAME?>



<? for-each: GROUP_NAME?>



そしてグループを閉じるには<?end for-each?>



を配置する必要があり、XLSではグループからのデータで満たされるセルを選択してXDO_GROUP_?GROUP_NAME?



として設定するXDO_GROUP_?GROUP_NAME?



。 次のようになります。







3)通常のExcel機能を使用してセルに入力するデータのタイプを指定できるため、セル自体に書き込む内容に注意してください。セルに書き込まれる内容はこのタイプに対応する必要があります。 私にとってうまくいかなかった唯一のことは、出力の日付として日付を取得することでした。これのために小さなマクロを作成する必要がありました。 そうそう、ExcelのRTFテンプレートでは不可能だったマクロでレイアウトを補完できるようになりました。



4)必ずXDO_METADATAタブを用意してください:







「Data Constraints:」の前に記述されたすべてのものは、変更する必要はなく、これはすべてのXLSテンプレートに存在する必要があります。 低いのは機能です。 XSLはサポートされていますが、残りについては知りません。 要素がグループ外にある場合、 xsl:value-of select



介して取得する必要がxsl:value-of select



。 このタブのすべてのアイテムには、。// ELEMENT_NAMEからアクセスする必要があります。



あとがき





XLSテンプレートを使用する場合、列数ごとに個別のバージョンのテーブルを作成する必要がなくなりました。 最大列数のテーブルを作成すれば十分です。 データが存在する列は自動的に入力され、データは存在せず、空のままになります。 これにより、不要な作業が回避されます。



このリンクで、そのようなテンプレートを作成する可能性に関する追加情報を見つけることができます。



これが誰かがテンプレートをコンパイルする手間を避けるのに役立つことを願っています。



All Articles